在Java中将2D数组转换为图像?
我有2D数组,它只有1-0个值,但它的类型是int[] 现在我想把这个数组转换成黑白二值图像。但是我找不到适合我的问题的答案。我搜索过谷歌和这个网站。有人能帮我吗 我已经尝试了以下代码,但是它在Java中将2D数组转换为图像?,java,image,bufferedimage,Java,Image,Bufferedimage,我有2D数组,它只有1-0个值,但它的类型是int[] 现在我想把这个数组转换成黑白二值图像。但是我找不到适合我的问题的答案。我搜索过谷歌和这个网站。有人能帮我吗 我已经尝试了以下代码,但是它 String path = "C:\\Users\\Cyrus\\Desktop\\test.jpg"; BufferedImage image = new BufferedImage(b.length, b[0].length, BufferedImage.TYPE_INT_RGB);
String path = "C:\\Users\\Cyrus\\Desktop\\test.jpg";
BufferedImage image = new BufferedImage(b.length, b[0].length, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < b.length; x++) { // b is my 2D array
for (int y = 0; y < b[x].length; y++) {
image.setRGB(x, y, b[x][y]);
}
}
File ImageFile = new File(path);
try {
ImageIO.write(image, "jpg", ImageFile);
} catch (IOException e) {
e.printStackTrace();
}
//在我修改代码之后
String path = "C:\\Users\\Cyrus\\Desktop\\test.jpg";
BufferedImage image = new BufferedImage(a.length, a[0].length, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < a.length; x++) {
for (int y = 0; y < a[x].length; y++) {
int value ;
if(a[x][y]==1) value = new Color(255,255,255).getRGB();
else value = new Color(0,0,0).getRGB();
image.setRGB(x, y, value);
}
}
File ImageFile = new File(path);
try {
ImageIO.write(image, "jpg", ImageFile);
} catch (IOException e) {
e.printStackTrace();
}
但是它返回了错误的图像你能更具体地说明你得到的结果吗?它抛出了一些异常吗?或者程序正常完成,但没有产生您想要的结果 您应该注意到,在这里您想要使用二进制图像,那么选择JPG有什么具体的原因吗?正如我所知,JPG并不是像bmp那样的颜色三元组RGB的本地表示。jpeg文件是数据序列的容器,其中的头文件EXIF,QT,…,中包含大量信息,并用标记标记。要直接处理数组中的像素值,必须对jpg文件中的数据序列进行解码,然后在播放图像后,主图像数据将再次编码为jpg流
为了直接播放像素值,我建议您使用其他格式,如TGA、png,ah,它返回黑色图像尝试打印出BuffereImage的实例,然后您就会明白原因。要将本机原始数据矩阵传递给BufferImage类型的对象,然后使用该BufferImage写入image并不是那么容易。如果BufferImage是读取另一个图像的结果,则可以毫无问题地保存它。如果你想玩像那样的像素,我建议你试试openCV和Java。语法也非常简单和直观。