org.apache.commons.imaging.ImageReadException:无法读取幻数以猜测格式

时间:2016-07-05 12:24:23

标签: java apache-commons exif

我正在尝试通过jsp上传图像,而在后端我正在尝试读取其元数据。但是我收到了这个错误

  

org.apache.commons.imaging.ImageReadException:无法读取幻数以猜测格式。

final ImageMetadata metadata = Imaging.getMetadata(file.getBytes());

问题是目标文件是MultipartFile而不是它,它应该是File类型。

3 个答案:

答案 0 :(得分:1)

我使用下面的代码在File中转换了Multipartfile以避免错误。

 File convFile = new File( multipart.getOriginalFilename());
 multipart.transferTo(convFile);
 final ImageMetadata metadata = Imaging.getMetadata(convFile);

答案 1 :(得分:0)

好吧,假设错误来自here(很难说没有完整的堆栈跟踪),

        int i1 = is.read();
        int i2 = is.read();
        if ((i1 < 0) || (i2 < 0))
            throw new ImageReadException(
                    "Couldn't read magic numbers to guess format.");

我认为图像的上传以某种方式被破坏,或文件错误。我建议只从文件系统中读取文件,检查前两个字节,然后从那里移动。

答案 2 :(得分:0)

我通过要求它读取空流而收到此错误,因此,如果file.getBytes()为空,也会发生此错误。