You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.3 KiB
104 lines
2.3 KiB
/**
|
|
*
|
|
*/
|
|
package neural;
|
|
|
|
import java.awt.Color;
|
|
import java.awt.Graphics2D;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.util.Random;
|
|
|
|
import javax.imageio.ImageIO;
|
|
|
|
public class ColorMap {
|
|
|
|
/**
|
|
* @param data
|
|
* @param pixelsWidth
|
|
* @param pixelsHeight
|
|
* @return
|
|
* @throws Exception
|
|
* @see https://josetips.wordpress.com/category/java/
|
|
*/
|
|
public static BufferedImage generateImage(double[][] data, int pixelsWidth, int pixelsHeight) throws Exception {
|
|
|
|
double x = 0, y = 0;
|
|
BufferedImage bi = new BufferedImage(pixelsWidth, pixelsHeight, BufferedImage.TYPE_3BYTE_BGR);
|
|
Graphics2D g = (Graphics2D) bi.getGraphics();
|
|
|
|
int w = data[0].length;
|
|
int l = data.length;
|
|
double Dy = (double) pixelsHeight / (double) l;
|
|
double Dx = (double) pixelsWidth / (double) w;
|
|
int height = (int) Math.ceil(Dy);
|
|
int width = (int) Math.ceil(Dx);
|
|
int gap = (int) Math.ceil(width / 4);
|
|
|
|
double max = -Double.MAX_VALUE;
|
|
double min = Double.MAX_VALUE;
|
|
for (int i = 0; i < l; i++) {
|
|
for (int j = 0; j < w; j++) {
|
|
max = data[i][j];
|
|
if (data[i][j] < min) {
|
|
min = data[i][j];
|
|
}
|
|
}
|
|
}
|
|
|
|
float fcolor;
|
|
float saturation = (float) 0.9;
|
|
float bright = (float) 0.7;
|
|
|
|
g.setColor(Color.WHITE);
|
|
g.fillRect(0, 0, pixelsWidth, pixelsHeight);
|
|
for (int i = 0; i < l; i++) {
|
|
for (int j = 0; j < w; j++) {
|
|
fcolor = (float) ((data[i][j] - min) / (max - min));
|
|
float hue = fcolor;
|
|
g.setColor(Color.getHSBColor((float) (hue * 0.7), saturation, bright));
|
|
g.fillRect((int) x, (int) y, width - gap, height);
|
|
x += Dx;
|
|
}
|
|
y += Dy;
|
|
x = 0;
|
|
}
|
|
|
|
File f = new File("color.png");
|
|
try {
|
|
ImageIO.write(bi, "png", f);
|
|
}
|
|
catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
g.dispose();
|
|
|
|
return bi;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
double[][] data;
|
|
int pixelsWidth = 300;
|
|
int pixelsHeight = 400;
|
|
Random r = new Random();
|
|
|
|
data = new double[pixelsWidth][];
|
|
for (int ndx = 0; ndx < pixelsWidth; ndx++) {
|
|
data[ndx] = new double[pixelsHeight];
|
|
for (int ndx2 = 0; ndx2 < pixelsHeight; ndx2++) {
|
|
// data[ndx][ndx2] = r.nextDouble();
|
|
data[ndx][ndx2] = ndx2;
|
|
}
|
|
|
|
}
|
|
|
|
try {
|
|
generateImage(data, pixelsWidth, pixelsHeight);
|
|
}
|
|
catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
}
|
|
}
|
|
|