JAVA: как создать.PNG изображение из байта[]?
Я видел некоторый источник кода, но я не понимаю...
Я использую Java 7
пожалуйста, как преобразовать RGB (Красный,Зеленый,Синий) Массив Байт (или что-то подобное) на .Файл формата PNG ?
пример из массива, который может представлять "пиксель RGB":
byte[] aByteArray={0xa,0x2,0xf};
Важный Аспект :
Я пытаюсь создать .PNG файл только из байта []"не от предыдущий существующий файл"
возможно ли это с помощью существующего API? ;)
вот мой первый код :
byte[] aByteArray={0xa,0x2,0xf};
ByteArrayInputStream bais = new ByteArrayInputStream(aByteArray);
File outputfile = new File("image.png");
ImageIO.write(bais, "png", outputfile);
....ошибка : не найден подходящий метод
здесь другая версия изменена из Джереми но похожи :
byte[] aByteArray={0xa,0x2,0xf};
ByteArrayInputStream bais = new ByteArrayInputStream(aByteArray);
final BufferedImage bufferedImage = ImageIO.read(newByteArrayInputStream(aByteArray));
ImageIO.write(bufferedImage, "png", new File("image.png"));
....несколько ошибки : image = = null! ...... Уверен ? Примечание : Я не ищу, чтобы использовать исходный файл
1 ответов
API ввода-вывода изображений имеет дело с изображениями, поэтому вам нужно сначала сделать изображение из вашего массива байтов, прежде чем записывать его.
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"));
предполагается, что массив байтов имеет три байта на пиксель (красный, зеленый, затем синий), а диапазон значений-0-255.