【发布时间】:2015-01-30 03:43:12
【问题描述】:
我想将我的字节数组转换成二进制图像 但我不知道该怎么做。 数组值只有 0 和 1。
0 = 黑色,1 = 白色,
byte [] arr = new byte[32*32];
for(int i=0;i<arr.length;i++){
arr[i]= i%2==0?(byte)0:(byte)1
}
请帮帮我,谢谢
【问题讨论】:
我想将我的字节数组转换成二进制图像 但我不知道该怎么做。 数组值只有 0 和 1。
0 = 黑色,1 = 白色,
byte [] arr = new byte[32*32];
for(int i=0;i<arr.length;i++){
arr[i]= i%2==0?(byte)0:(byte)1
}
请帮帮我,谢谢
【问题讨论】:
这取决于您要如何处理该二进制图像。 如果您只需要它来进行计算,那么您的数组可能会更好地为您完成这项工作, 虽然二维数组使用起来可能更方便。
如果要构造一个BufferedImage对象,可以指定为 每像素类型 1 位(见下文),并使用 setRGB() 方法填充其内容。 然后可以将此类图像保存到文件或在 GUI 中显示,或使用 getRGB() 方法访问。
这是一个工作示例 (GenerateChecker.java):
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.IOException;
import java.io.File;
public class GenerateChecker
{
private static final int width = 32;
private static final int height = 32;
public static void main(String args[]) throws IOException
{
BufferedImage im = new BufferedImage(32, 32, BufferedImage.TYPE_BYTE_BINARY);
int white = (255 << 16) | (255 << 8) | 255;
int black = 0;
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
im.setRGB(x, y, (((x + y)&1) == 0) ? black : white);
File outputfile = new File("checker.png");
ImageIO.write(im, "png", outputfile);
}
}
~
【讨论】: