【发布时间】:2013-06-19 17:18:27
【问题描述】:
背景
一段时间以来,我一直在研究用于读取 JPEG 的 ImageIO 插件。我想实现的功能之一是根据 EXIF/TIFF 方向标签(如果存在)自动旋转图像。
我不是在问如何实现旋转本身,而是我的问题在于 ImageReader API。对于许多用户来说,只需调用ImageIO.read(myJPEG) 就是他们所做的一切,我认为他们对将图像旋转到正确的方向感到满意。但是,如果您查看ImageReader API,它有许多方法可以获取有关图像的信息和元数据,以及读取像素数据的多种方法。
问题
我是否应该公开一种方法来读取文件中的数据,使用ImageReadParam(我也可以反过来做,但这不会让上述常见情况受益于功能)?
我正在研究元数据支持(如IIOMetadata),元数据应该报告文件中写入的方向标记,还是更新以反映旋转的图像?这就是我觉得事情崩溃的地方......这里真正的问题是,当有人读取图像和元数据时会发生什么,对图像进行一些操作并将其与元数据一起再次存储(如果作者然后进行反向旋转,还是“神奇地”丢弃方向标签并更新w/h)?
...或者,我是否应该放弃它,让客户端读取 EXIF 元数据,并在需要时自行应用轮换?
欢迎来自实现者和 ImageIO 用户的输入和建议! :-)
【问题讨论】:
-
ImgScalr 中有趣的相关问题:github.com/thebuzzmedia/imgscalr/issues/62
-
@SebastienLorber 很有趣。不知道为什么这在 Java 中会变得更加困难或不可靠。但很高兴知道至少对这个特性有一些需求。 :-)
标签: java jpeg exif javax.imageio