2014-12-02 101 views

回答

0

这取决于你打算用二进制图像做什么。 如果你只是需要它来进行计算,你的阵列可能会为你做更好的工作, ,尽管二维数组可能会更方便使用。

如果要构建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); 
    } 
} 

+0

对不起,我不明白这条线(下) 你能解释一下,谢谢 “INT白色= (255 << 16)|(255 << 8)| 255;“ – user3505924 2014-12-03 01:04:41

+0

它只是建立完全白色 - 其中红色= 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