Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java绘制像素图像_Java_Image_Draw - Fatal编程技术网

用java绘制像素图像

用java绘制像素图像,java,image,draw,Java,Image,Draw,我得到了一个数组int[28][28],由数字0-255组成。0-黑色,255-白色。我需要制作一个28x28px大小的图像。怎么做?从概念上讲,这个想法很简单。可能是更好的选择之一,因为它提供了一个可变的缓冲区,您也可以编写。它可以显示并输出到磁盘 您需要解决的问题是将“color”转换为API使用的“packedint”值 虽然这实际上是一个相当常见的解决方案,但我看到太多人在实现算法时犯了简单的错误,因此我使用了可用的Color类。它没有那么“高效”,但我不认为您正在尝试生成一个每秒需要运

我得到了一个数组int[28][28],由数字0-255组成。0-黑色,255-白色。我需要制作一个28x28px大小的图像。怎么做?

从概念上讲,这个想法很简单。可能是更好的选择之一,因为它提供了一个可变的缓冲区,您也可以编写。它可以显示并输出到磁盘

您需要解决的问题是将“color”转换为API使用的“packed
int
”值

虽然这实际上是一个相当常见的解决方案,但我看到太多人在实现算法时犯了简单的错误,因此我使用了可用的
Color
类。它没有那么“高效”,但我不认为您正在尝试生成一个每秒需要运行数百帧的解决方案;)

Random rnd=new Random();
int[][]像素=新int[128][128];
对于(int y=0;y<128;y++){
对于(int x=0;x<128;x++){
像素[y][x]=rnd.nextInt(255);
}
}
BuffereImage img=新的BuffereImage(128,128,BuffereImage.TYPE_INT_RGB);
对于(int y=0;y<128;y++){
对于(int x=0;x<128;x++){
颜色=新颜色(像素[y][x],像素[y][x],像素[y][x]);
setRGB(x,y,color.getRGB());
}
}
showMessageDialog(null,新JLabel(新图像图标(img));
试一试{
write(img,“png”,新文件(“SuperDuppa.png”);
}捕获(IOEX异常){
例如printStackTrace();
}

欢迎使用堆栈溢出!请复习我们的文章,帮助你提出一个好问题,从而得到一个好答案。我猜是不同类型的灰色。介于黑白之间。所谓“制作图像”,你的意思是在屏幕上显示图像,将图像保存到文件中,或者什么?实际上,这并不重要。我只是想看看。保存会更好,但显示也很好。使用class
BufferedImage
Random rnd = new Random();
int[][] pixels = new int[128][128];
for (int y = 0; y < 128; y++) {
    for (int x = 0; x < 128; x++) {
        pixels[y][x] = rnd.nextInt(255);
    }
}

BufferedImage img = new BufferedImage(128, 128, BufferedImage.TYPE_INT_RGB);
for (int y = 0; y < 128; y++) {
    for (int x = 0; x < 128; x++) {
        Color color = new Color(pixels[y][x], pixels[y][x], pixels[y][x]);
        img.setRGB(x, y, color.getRGB());
    }
}
JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(img)));
try {
    ImageIO.write(img, "png",  new File("SuperDuppa.png"));
} catch (IOException ex) {
    ex.printStackTrace();
}