Как создать маску изображения из PNG с прозрачностью в Java? - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужно создать класс Java для создания маски изображения из изображения PNG с прозрачностью. Я бы предпочел сделать это как можно больше с готовыми библиотеками обработки изображений.

1 Ответ

0 голосов
/ 14 ноября 2018
  • Чтение исходного изображения,
  • Создание нового изображения с новым растром и новой цветовой моделью:
    • Растр, который оборачивает исходный буфер данных изображения, просто интерпретируется по-разному(с использованием цветовой модели),
    • Цветовая модель, которая берет первый байт из каждых четырех и интерпретирует его как интенсивность.

Исходный растр должен бытьрастр с чередованием байтов, с четырьмя байтами на пиксель.В этом примере проверки безопасности не проводятся.

BufferedImage orig = ImageIO.read(new File("temp.png"));

DataBuffer dataBuffer = orig.getRaster().getDataBuffer();
ColorSpace cs         = ColorSpace.getInstance(ColorSpace.CS_GRAY);
int[]      nBits      = {8};
int[]      bOffs      = {0};
ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false,
                                                Transparency.TRANSLUCENT,
                                                DataBuffer.TYPE_BYTE);
WritableRaster raster = Raster.createInterleavedRaster(dataBuffer,
                                                       orig.getWidth(), orig.getHeight(),
                                                       orig.getWidth() * 4, 4,
                                                       bOffs, null);

BufferedImage mask = new BufferedImage(colorModel, raster, false, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...