我一直在努力寻找并回答这个问题。我正在尝试使用TYPE_BYTE_BINARY的imageType更改大型BufferedImage中像素的颜色。默认情况下,当我创建图像时,它会创建一个很好的黑色图像,但我似乎无法将像素颜色更改为白色。
这是我想要做的基本想法。
BufferedImage bi = new BufferedImage(dim[0], dim[1], BufferedImage.TYPE_BYTE_BINARY);
bi.setRBG(x, y, 255)
这对我来说似乎很奇怪,因为TYPE_BYTE_BINARY图像不会有RGB颜色,所以我知道这不是正确的解决方案。
我的另一个想法是使用createGraphics()方法创建多个bufferedImage TYPE_BYTE_BINARY,然后将所有这些缓冲的图像组合成一个大的bufferedImage,但在使用TYPE_BYTE_BINARY imageType时我找不到任何相关信息。
在阅读本文时,我遇到的人说你需要在BufferedImage上使用createGraphics()方法,但我不想这样做,因为它会占用太多内存。
我特意为此方法创建了此链接http://docs.oracle.com/javase/7/docs/api/java/awt/image/Raster.html createPackedRaster()(第二个)。这似乎可能是在正确的轨道上。
这些是能够编辑TYPE_BYTE_BINARY图像的唯一选项吗?或者有另一种方式类似于python处理1位深度图像的方式吗?
在python中,这就是所有需要完成的事情。
im = Image.new("1", (imageDim, imageDim), "white")
picture = im.load()
picture[x, y] = 0 # 0 or 1 to change color black or white
感谢所有帮助或指导。
答案 0 :(得分:3)
一切正常。我能够在图像上获得白色像素。
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.awt.Color;
import java.io.File;
public class MakeImage
{
public static void main(String[] args)
{
BufferedImage im = new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_BINARY);
im.setRGB(10, 10, Color.WHITE.getRGB());
try
{
ImageIO.write(im, "png", new File("image.png"));
}
catch (IOException e)
{
System.out.println("Some exception occured " + e);
}
}
}