Я изо всех сил пытаюсь найти и ответить на этот вопрос. Я пытаюсь изменить цвет пикселя в большом BufferedImage с типом imageType TYPE_BYTE_BINARY. По умолчанию, когда я создаю изображение, он создаст черное изображение, которое прекрасно, но я не могу изменить цвет пикселя на белый.
Это основная идея того, что я хочу сделать.
BufferedImage bi = new BufferedImage(dim[0], dim[1], BufferedImage.TYPE_BYTE_BINARY);
bi.setRBG(x, y, 255)
Это кажется странным для меня, поскольку изображение TYPE_BYTE_BINARY не будет иметь цвет RGB, поэтому я знаю, что это неправильное решение.
Еще одна идея, которую я создал, - создать несколько bufferedImage TYPE_BYTE_BINARY с помощью метода createGraphics(), а затем объединить все эти буферизованные изображения в один большой буферный массив, но я не смог найти никакой информации об этом при использовании TYPE_BYTE_BINARY imageType.
Когда я читал об этом, я встретил людей, говорящих, что вам нужно использовать метод createGraphics() в BufferedImage, но я не хочу этого делать, поскольку он будет использовать слишком много памяти.
Я столкнулся с этой ссылкой 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
Вся помощь или руководство приветствуются.
Все работает. Я могу получить белый пиксель на изображении.
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);
}
}
}