Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加载带有exif和/或损坏元数据的jpeg图像_Java_Image_Metadata - Fatal编程技术网

Java 加载带有exif和/或损坏元数据的jpeg图像

Java 加载带有exif和/或损坏元数据的jpeg图像,java,image,metadata,Java,Image,Metadata,在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

在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]
如果我试着读图像

另一个相关的注意事项是:我们有时也会得到带有其他元数据的jpg图像,而ImageIO.read也无法处理这些元数据,因此我非常想要一个不尝试读取/处理/理解任何元数据的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-例如,商业产品

2-使用像ImageMagick(或GraphicsMagick)这样的工具,并选择使用java接口,例如或

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


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

这里没有太多可用选项。如果想要解决一个特定的问题,毫无疑问可以用Java来完成。然而,如果你只是在程序中找一个库来做一些图像处理,而不需要做一个图形专家程序员,那么开源java库就不符合商业模式,或者与java无关。 在SO上进行简单搜索即可显示状态。因此,如果您需要在生产环境中提供可靠且惊喜最少的产品,您(在我看来)很可能会得到以下结果之一(截至本文发布之日的状态):

1-例如,商业产品

2-使用像ImageMagick(或GraphicsMagick)这样的工具,并选择使用java接口,例如或

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


所以,也许你可以在你的jpg文件上试试:“/usr/bin/mogrify-strip-colorspace sRGB”。

你确定这是元数据吗?我对使用CMYK编码的文件也有类似的问题。你的图像的颜色模型/空间是什么?有趣的故事。结果是一些文件的元数据和其他文件的颜色配置文件问题。但现在,如果无法打开文件,我只需在文件上运行/usr/bin/mogrify-strip,这将处理大多数问题,除了所有颜色配置文件问题。我仍然希望有一个更好的java库来处理带有颜色配置文件(特别是cmyk)/愚蠢的gamma值和类似问题的jpg文件(我目前遇到了.jpg文件的问题,它有更多的色域数据,然后是图像数据)。你确定它是元数据吗?我对使用CMYK编码的文件也有类似的问题。你的图像的颜色模型/空间是什么?有趣的故事。结果是一些文件的元数据和其他文件的颜色配置文件问题。但现在,如果无法打开文件,我只需在文件上运行/usr/bin/mogrify-strip,这将处理大多数问题,除了所有颜色配置文件问题。我仍然希望有一个更好的java库来处理带有颜色配置文件(特别是cmyk)/愚蠢的gamma值和类似问题的jpg文件(我目前遇到了.jpg文件的问题,它有更多的色域数据,然后是图像数据)。