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

转换并显示字节数组中的图像

养俊驰
2023-03-14
问题内容

我正在编写一个程序,该程序从服务器获取有关字节数组中图像的数据。我正在将这些数据转换为24位BMP格式(无论是jpeg,png,bmp还是8-24-32bpp)。首先,将其保存到HD中,然后将其加载到JLabel的Icon中。完美运行,尽管在某些情况下会出现以下异常:

java.io.EOFException at
javax.imageio.stream.ImageInputStreamImpl.readFully(ImageInputStreamImpl.java:353) at
com.sun.imageio.plugins.bmp.BMPImageReader.read24Bit(BMPImageReader.java:1188) at
com.sun.imageio.plugins.bmp.BMPImageReader.read(BMPImageReader.java:843) at
javax.imageio.ImageIO.read(ImageIO.java:1448) at 
javax.imageio.ImageIO.read(ImageIO.java:1308)

对于此行(第二行)

File imgFile = new File("d:/image.bmp");
BufferedImage image = ImageIO.read(imgFile);

在这些情况下:

  • 图像不会加载到JLabel中,但是可以在我的HD上找到
  • 转换不正确,因为有些“滑移”
  • 图片就像在Word文档中使用斜体时一样

首先,我以为bpp可能是个问题,然后我以为图片可能太大了,但是我有一些案例可以解决这个问题,而对于两种建议都不可行。我有点卡在这里,很高兴有想法。


问题答案:
  • 当您在Word文档中使用斜体时,图片就像..

我想我终于明白了这个项目符号的意思.. ;-)

投机的答案,但这里去:

如果您编写的图像看起来“歪斜”,则可能是由于BMP格式指定的每一列缺少填充(或BMP标头中的宽度字段不正确)。然后,我假设您获得EOF例外的图像的宽度不是4的倍数。

尝试使用ImageIO编写BMP,以查看是否有帮助:

private static BufferedImage createRGBImage(byte[] bytes, int width, int height) {
    DataBufferByte buffer = new DataBufferByte(bytes, bytes.length);
    ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), new int[]{8, 8, 8}, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
    return new BufferedImage(cm, Raster.createInterleavedRaster(buffer, width, height, width * 3, 3, new int[]{0, 1, 2}, null), false, null);
}

byte[] bytes = ...; // Your image bytes
OutputStream stream = ...; // Your output

BufferedImage image = createRGBImage(bytes, width, height);

try {
    ImageIO.write(image, "BMP", stream);
}
finally {
    stream.close();
}


 类似资料:
  • 问题内容: 我因此创建了一个数组: 我要这样做的是在512x512图像的中心显示一个红点。(至少从…开始,我想我可以从那里找出其余的内容) 问题答案: 您可以使用PIL创建(并显示)图像:

  • 问题内容: 我有以下代码,我试图通过测试,但似乎无法理解Java世界中各种编码形式。 我想我的问题是:将任意字节的字节数组转换为Java字符串,然后将同一Java String转换为另一个字节数组的正确方法是什么,该字节数组将具有与原始字节相同的长度和相同的内容数组? 问题答案: 尝试特定的编码: ideone链接

  • 问题内容: 我正在尝试通过和不通过将字节数组写入磁盘来验证字节数组,然后使用来打开它。我看了and方法,但是我需要图像的大小(只有将字节流转换为图像时才能得到)。 我的读取功能如下所示: 然后作为基本测试,我尝试将字节数组转换为图像: 如果有人知道我在做什么错,或者有一种更优雅的方法将这些字节转换为对我有真正帮助的图像。 PS:我以为我需要字节数组,因为我对字节进行了处理(使它们出现图像错误)。这

  • 问题内容: 我有一个PIL图像格式的图像。我需要将其转换为字节数组。 现在我需要作为字节数组。 问题答案: 感谢大家的帮助。 终于解决了!! 这样,我不必将裁剪后的图像保存在硬盘中,并且能够从PIL裁剪后的图像中检索字节数组。

  • 我有一个byte[],它是通过从某个表中提取数据返回的。我想把这个字节数组转换成png图像。注意:我没有像其他地方类似的例子中那样从图像中获得字节数组。

  • 问题内容: 使用Javascript,我正在对WCF服务进行AJAX调用,并且正在返回字节数组。如何将其转换为图像并显示在网页上? 问题答案: 我意识到这是一个旧线程,但是我设法通过Web服务上的AJAX调用做到了这一点,并认为我愿意分享… 我的页面中已经有图像: AJAX: 我的“ GetItemPreview”代码查询一个SQL Server,其中我将图像存储为base64字符串,并将该字段作