BufferedImage TYPE_BYTE_BINARY изменить цвет пикселя

1

Я изо всех сил пытаюсь найти и ответить на этот вопрос. Я пытаюсь изменить цвет пикселя в большом 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

Вся помощь или руководство приветствуются.

Теги:
image

1 ответ

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);
        }
    }
}
  • 0
    Ничего себе, это простое решение, я так долго боролся. Спасибо Мариус!
  • 0
    Для меня это слишком простое решение, показывающее, что оно может быть коротким и в Java :). Добро пожаловать!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню