Java将ByteArray转换为图像

时间:2013-02-18 13:12:36

标签: java image bytearray

我正在读取一个包含字节数组的文件。我下载了Apache Commons IO库以使用FileUtils的方法readFileToByteArray

File file = new File("/home/username/array.txt");
FileUtils fu = new FileUtils();
byte[] array = FileUtils.readFileToByteArray(file);

我想将字节数组转换为Image。

ByteArrayInputStream bis = new ByteArrayInputStream(array);
Iterator<?> readers = ImageIO.getImageReadersByFormatName("gif");

ImageReader reader = (ImageReader) readers.next();
Object source = bis;

ImageInputStream iis = ImageIO.createImageInputStream(source);

reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();

Image image = reader.read(0, param); // this line is the problem

当代码进入引用行时,它会抛出异常

javax.imageio.IIOException: Unexpected block type 128!

我不知道这个异常意味着什么,因此,我不知道如何修复它。 只需要提供任何可能有用的进一步信息。

由于

4 个答案:

答案 0 :(得分:1)

获得byte[]后,您可以使用ImageIO将其写入BufferedImage。

BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(array));
ImageIO.write(bImageFromConvert, "gif", new File("c:/test.gif"));

答案 1 :(得分:1)

该代码意味着读者无法破译图像文件上的元数据。确保正确的文件被读取并且格式正确。或者它可能期望不同的文件类型。

答案 2 :(得分:1)

我已经在this文件上尝试了您的代码,它运行正常。

array.txt的格式是什么? readFileToByteArray()需要二进制格式,图像阅读器会进一步期望它是GIF文件。

答案 3 :(得分:0)

没有byte []我觉得这对多部分文件传输很有用,为此我们需要apache常见的jar文件

    final FileOutputStream output = new FileOutputStream("D:\\Dir\\"+ request.getParameter("imageName") + ".jpg");
        IOUtils.copy(request.getPart("file").getInputStream(), output);
        output.close();