当前位置: 首页 > 面试题库 >

JAVA:如何从byte []创建.PNG图像?

阮雅达
2023-03-14
问题内容

我看过一些代码源,但是我不明白…

我使用Java 7

请, 如何将RGB (红色,绿色,蓝色) 字节数组 (或类似 格式转换为.PNG文件格式

可能表示“ RGB像素”的数组中的示例

byte[] aByteArray={0xa,0x2,0xf};

重要方面:

我尝试仅从byte []“ 而不是 从以前的现有文件” 生成.PNG文件

现有的API有可能吗?;)

这是我的第一个代码:

byte[] aByteArray={0xa,0x2,0xf}; 
ByteArrayInputStream bais = new ByteArrayInputStream(aByteArray); 
File outputfile = new File("image.png"); 
ImageIO.write(bais, "png", outputfile);

.... 错误: 找不到合适的方法

这里是 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"));

....多个 错误: 图片==空!......确定吗?注意:我不搜索使用源文件


问题答案:

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"));

假定字节数组每个像素有三个字节(红色,绿色然后是蓝色),并且值的范围是0-255。



 类似资料:
  • 我的任务是: 创建一个TBitmap对象 如何在Delphi XE中做到这一点?

  • 问题内容: 我正在寻找一个Java库,该库可以获取图像(PNG)并创建PDF。或直接从已绘制的Java面板中创建PDF。 问题答案: 您可以使用Gnostice PDFOne for Java(http://www.gnostice.com/PDFOne_Java.asp)实现此目的。 在下面的代码片段中找到可从PNG图像创建PDF文档的代码。 要从JPanel创建BufferedImage,可以

  • 我正在寻找一个Java库,将可以采取一个图像(PNG)和创建一个PDF。或者直接从已绘制的java面板创建PDF。

  • 我正在玩gstream er命令行界面,在从PNG图像创建mp4视频文件时卡住了。你们能帮忙解决这个问题吗? 使用下面的命令,我从摄像机创建了PNG图像: gst-launch-1.0。exe-v ksvideosrc!队列decodebin!视频转换!pngenc!多文件接收器位置=“frame  d.png” 我可以使用以下命令播放pPNG图像: gst-launch-1.0-v multi

  • 问题内容: 我没有找到这样的多图构造…当我想这样做时,我遍历了地图,并填充了多图。还有其他方法吗? 第一个结果是,但我希望 问题答案: 假设你有 那我相信这是最好的 或更佳,但更难阅读

  • 我试图在Java创建一个地图,但失败了。 它告诉我在行的末尾需要或,但是,当我尝试其中一个时,我会收到错误。 将告诉我“映射是抽象的;无法实例化” 将告诉我“应为数组初始值设定项” 我对编码还不太熟悉,所以请对我友好一点,多多忍耐:)