0
我想将我的bytearray转换成二进制图像 但我不知道该怎么做。 数组值只有0和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
}
请帮帮我,谢谢
我想将我的bytearray转换成二进制图像 但我不知道该怎么做。 数组值只有0和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);
}
}
〜
对不起,我不明白这条线(下) 你能解释一下,谢谢 “INT白色= (255 << 16)|(255 << 8)| 255;“ – user3505924 2014-12-03 01:04:41
它只是建立完全白色 - 其中红色= 255(位23-16),绿色= 255(位15-8)和蓝色= 255(位7-0)。 java.awt.BufferedImage.TYPE_BYTE_BINARY([link] https://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html#TYPE_BYTE_BINARY)的描述说,如果的1位图像,颜色模型只允许两种颜色 - 0,0,0和255,255,255。 – Palo 2014-12-04 22:39:34