繁体   English   中英

使用exif和/或损坏的元数据加载jpeg图像

[英]load jpeg image with exif and/or corrupted meta data

Java中有没有办法用exif元数据加载jpeg图像?

我不需要exif数据(或任何其他元数据),但是问题是JavaIO.read给了我:

javax.imageio.IIOException: Unsupported Image Type
        at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:995) ~[na:1.7.0_09]
        at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:966) ~[na:1.7.0_09]
        at javax.imageio.ImageReader.read(ImageReader.java:940) ~[na:1.7.0_09]

如果我尝试阅读图像。

在相关说明上:我们有时还会获得ImageIO.read也无法处理的带有其他元数据的jpg图像,因此,我非常希望使用jpeg阅读器,它不尝试读取/处理/理解任何元数据。 但是我一直找不到。

图片数据本身受到了新的破坏,所有其他软件(Gimp,Firefox等)都可以正确读取和显示图片。

我什至尝试了以下方法,但仍然无法读取图像。

            Iterator readers = ImageIO.getImageReadersByFormatName("jpg");
            ImageReader reader = (ImageReader)readers.next();
            ImageInputStream iis = ImageIO.createImageInputStream(sourceFile);
            reader.setInput(iis,true,true);

            BufferedImage image = reader.read(0);

这里没有很多可用的选项。 如果要解决一个特定的问题,无疑可以用Java来解决。 但是,如果您只是寻求一个库来在项目中进行某些图像处理而又不需要成为图形专家,那么开源Java库就无法与商业库或非Java库相提并论。 对SO的简单搜索将揭示状态。 因此,如果您需要在生产环境中拥有可靠的东西而使意外情况降到最低 ,那么(我认为)您很可能会遇到以下其中一种情况(截至本帖子发布之日的状态):

1-商业产品,例如Snowbound RasterMaster

2-使用诸如ImageMagick(或GraphicsMagick)之类的工具,并为其选择使用Java接口,例如im4javaJMagick

至于您的问题,您提到使用mogrify。 您还可以为输出图像设置颜色空间,这可能会解决您的问题: ImageMagick Colorspace

因此也许您可以尝试:在jpg文件上使用“ / usr / bin / mogrify -strip -colorspace sRGB”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM