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

org.apache.commons.imaging.ImageReadException: Couldn't read magic numbers to guess format

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

org.apache.commons.imaging.ImageReadException: Couldn't read magic numbers to guess format.

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

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

好吧,假设错误来自 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.");

我假设上传的图片不知何故损坏了,或者文件有误。我建议只从文件系统读取文件,检查前两个字节,然后从那里移动。

我使用以下代码在文件中转换了 Multipartfile 以避免错误。

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

我通过要求它读取一个空流得到了这个错误,所以如果 file.getBytes() 是空的,这也可能发生。