From 0fd0410de86d2a66de0427500df0ce81abaa5f61 Mon Sep 17 00:00:00 2001
From: Patrice Matz
Date: Fri, 27 Jul 2018 13:32:34 +0200
Subject: [PATCH] replacements pics are getting loaded
TODO:
find closest average
fill array if not enough pics
replace chunks of original
---
.idea/workspace.xml | 116 ++++++++++++++++++++++++++++++-------
collage.jpeg | Bin 0 -> 7978 bytes
src/com/company/Main.java | 57 ++++++++++++++----
src/com/company/chunk.java | 51 +++++++++-------
4 files changed, 172 insertions(+), 52 deletions(-)
create mode 100644 collage.jpeg
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 1510c24..94ed8f4 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,6 +2,7 @@
+
@@ -18,24 +19,38 @@
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
@@ -181,11 +196,12 @@
+
-
+
@@ -209,13 +225,12 @@
-
+
-
+
-
@@ -227,6 +242,7 @@
+
@@ -246,18 +262,25 @@
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
@@ -268,6 +291,7 @@
+
@@ -278,8 +302,14 @@
-
-
+
+
+
+
+
+
+
+
@@ -290,6 +320,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -301,22 +361,34 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
diff --git a/collage.jpeg b/collage.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..eb0a374d3d69acf24a21bdf10002275b4c047980
GIT binary patch
literal 7978
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
PwD9tl*>Et3uU-EIi4^(r
literal 0
HcmV?d00001
diff --git a/src/com/company/Main.java b/src/com/company/Main.java
index d0d1fd0..f7998bf 100644
--- a/src/com/company/Main.java
+++ b/src/com/company/Main.java
@@ -3,38 +3,75 @@ import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.awt.*;
+import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws IOException {
- File file = new File("C:\\Users\\Elliot\\Desktop\\bear.jpeg");
+ File file = new File("C:\\Users\\Elliot\\Desktop\\bear.jpg");
FileInputStream fis = new FileInputStream(file);
BufferedImage image = ImageIO.read(fis); //reading the image file
- int rows = 20;
- int cols = 30;
- int chunks = rows * cols;
+ ArrayList repPaths = getAllImages(new File("C:\\Users\\Elliot\\Desktop\\test\\"));
+
+ int rows = 3;
+ int cols = 3;
int chunkWidth = image.getWidth() / cols; // determines the chunk width and height
int chunkHeight = image.getHeight() / rows;
int count = 0;
- chunk[] imgs = new chunk[chunks];
+
+ chunk[] chunks = new chunk[rows * cols];
+ chunk[] replacements = new chunk[rows * cols];
+
for (int x = 0; x < rows; x++) {
for (int y = 0; y < cols; y++) {
//Initialize the image array with image chunks
BufferedImage tempimg = new BufferedImage(chunkWidth, chunkHeight, image.getType());
- imgs[count] = new chunk(tempimg);
- imgs[count].average();
-
+ chunks[count] = new chunk(tempimg);
// draws the image chunk
- Graphics2D gr = imgs[count++].getImg().createGraphics();
+ Graphics2D gr = chunks[count++].getImg().createGraphics();
gr.drawImage(image, 0, 0, chunkWidth, chunkHeight, chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x + chunkHeight, null);
gr.dispose();
+
+ chunks[count-1].average();
}
}
- ImageIO.write(imgs[2].getImg(), "jpg", new File("collage.jpg"));
+
+ for (int i = 0; i < cols; i++) {
+ // read file from path
+ File tempfile = new File(repPaths.get(i));
+ FileInputStream tempfis = new FileInputStream(tempfile);
+
+ // fill array of chunks with read images
+ BufferedImage tempimg = ImageIO.read(tempfis);
+ replacements[i] = new chunk(tempimg);
+ }
+
+ ImageIO.write(chunks[8].getImg(), "jpeg", new File("collage.jpeg"));
}
+
+ /**
+ * Returns all jpg images from a directory in an array.
+ * Source: http://www.java2s.com/Code/Java/2D-Graphics-GUI/Returnsalljpgimagesfromadirectoryinanarray.htm
+ * @param directory the directory to start with
+ * @return an ArrayList containing all the file paths or nul if none are found..
+ * @throws IOException
+ */
+ public static ArrayList getAllImages(File directory) throws IOException {
+ ArrayList resultList = new ArrayList(256);
+ File[] f = directory.listFiles();
+ for (File file : f) {
+ if (file != null && file.getName().toLowerCase().endsWith(".jpg")) {
+ resultList.add(file.getCanonicalPath());
+ }
+ }
+ if (resultList.size() > 0)
+ return resultList;
+ else
+ return null;
+ }
}
diff --git a/src/com/company/chunk.java b/src/com/company/chunk.java
index 66f7da7..dd893cd 100644
--- a/src/com/company/chunk.java
+++ b/src/com/company/chunk.java
@@ -3,23 +3,40 @@ package com.company;
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
+
public class chunk {
private BufferedImage img;
+ private int[] average;
chunk(BufferedImage Img){
- this.img = Img;
+ this.img = Img;
+ this.average = this.average();
}
+/*
+* GETTER AND SETTER
+*/
public BufferedImage getImg() {
return img;
}
public void setImg(BufferedImage img) {
this.img = img;
}
+
+ public int[] getAverage() {
+ return average;
+ }
+ public void setAverage(int[] average) {
+ this.average = average;
+ }
+
+ /*
+* OTHER METHODS
+*/
public int[] average(){
- int r = 0, g = 0, b = 0, a = 0, x= 0, y = 0;
+ int r = 0, g = 0, b = 0, a = 0, x= 0, y = 0, pc = 0;
for(; y < this.img.getHeight(); y++){
for(; x < this.img.getWidth(); x++){
@@ -27,27 +44,21 @@ public class chunk {
//get pixel value
int p = this.img.getRGB(x,y);
- //get alpha
- a = (p>>24) & 0xff;
-
- //get red
- r = (p>>16) & 0xff;
-
- //get green
- g = (p>>8) & 0xff;
-
- //get blue
- a = p & 0xff;
-
+ a += (p>>24) & 0xff;
+ r += (p>>16) & 0xff;
+ g += (p>>8) & 0xff;
+ b += p & 0xff;
+ pc++;
}
}
- r /= x*y;
- g /= x*y;
- b /= x*y;
- a /= x*y;
+ r /= pc;
+ g /= pc;
+ b /= pc;
+ a /= pc;
- System.out.println(r + " , " + g + " , " + b + " , " + a);
- return new int[]{r,g,b};
+ //System.out.println(r + " , " + g + " , " + b + " , " + a);
+ return new int[]{r,g,b,a};
}
+
}