Как я могу получить PNG из байтового массива (2 байта / пиксель)? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть байтовый массив, в котором мои данные хранятся с двумя байтами на пиксель.Теперь я хочу получить PNG из этих данных.Я нашел отличный код здесь :

byte[] aByteArray = {0xa,0x2,0xf,(byte)0xff,(byte)0xff,(byte)0xff};
int width = 1;
int height = 2;

DataBuffer buffer = new DataBufferByte(aByteArray, aByteArray.length);

//3 bytes per pixel: red, green, blue
WritableRaster raster = Raster.createInterleavedRaster(buffer, width, height, 3 * width, 3, new int[] {0, 1, 2}, (Point)null);
ColorModel cm = new ComponentColorModel(ColorModel.getRGBdefault().getColorSpace(), false, true, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); 
BufferedImage image = new BufferedImage(cm, raster, true, null);

ImageIO.write(image, "png", new File("image.png"));

Здесь автор использует 3 байта на пиксель.Итак, мой вопрос: как я могу заставить этот код работать, если у моего байтового массива есть 2 байта на пиксель?

ОБНОВЛЕНИЕ: данные серого цвета, к сожалению, я не знал, что раньше ... Так что нет необходимостиполучить цветное изображение.Итак, вы знаете, кому получить серое масштабированное изображение из этого байтового массива?

1 Ответ

0 голосов
/ 01 марта 2019

По моему мнению, вы должны дать этому коду 3 байта на пиксель, чтобы он получал три цвета RGB.Если вы хотите сделать это так, используя только зеленый и синий или другую комбинацию, вы должны установить значение по умолчанию для третьего ... Но я не уверен на 100%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...