Mad*_*key 9 java arrays image file converter
我见过一些代码源,但我不明白......
我使用Java 7
请,如何将RGB转换(红,绿,蓝)字节数组(或类似的东西)的.png文件格式?
可以表示"RGB像素"的数组示例:
byte[] aByteArray={0xa,0x2,0xf};
Run Code Online (Sandbox Code Playgroud)
重要方面:
我尝试仅从字节[]" 而不是从以前的现有文件" 生成.PNG文件
是否可以使用现有的API?;)
这是我的第一个代码:
byte[] aByteArray={0xa,0x2,0xf};
ByteArrayInputStream bais = new ByteArrayInputStream(aByteArray);
File outputfile = new File("image.png");
ImageIO.write(bais, "png", outputfile);
Run Code Online (Sandbox Code Playgroud)
.... 错误:找不到合适的方法
这里从Jeremy修改的其他版本看起来类似:
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"));
Run Code Online (Sandbox Code Playgroud)
....多个错误: image == null!......当然可以?注意:我不搜索使用源文件
pru*_*nge 13
Image I/O 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"));
Run Code Online (Sandbox Code Playgroud)
这假设字节数组每个像素有三个字节(红色,绿色然后是蓝色),值范围是0-255.