- Чтение исходного изображения,
- Создание нового изображения с новым растром и новой цветовой моделью:
- Растр, который оборачивает исходный буфер данных изображения, просто интерпретируется по-разному(с использованием цветовой модели),
- Цветовая модель, которая берет первый байт из каждых четырех и интерпретирует его как интенсивность.
Исходный растр должен бытьрастр с чередованием байтов, с четырьмя байтами на пиксель.В этом примере проверки безопасности не проводятся.
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);