背景
一段时间以来,我一直在研究用于读取 JPEG 的 ImageIO 插件。我想实现的功能之一是根据 EXIF/TIFF 方向标签(如果存在)自动旋转图像。
我不是在问如何实现旋转本身,而是我的问题在于 ImageReader API。对于许多用户来说,ImageIO.read(myJPEG)
他们所做的只是简单地调用,我认为他们很高兴将图像旋转到正确的方向。但是,如果您查看ImageReader
API,它有许多方法可以获取有关图像的信息和元数据,以及读取像素数据的各种方法。
问题
我是否应该公开一种方法来读取文件中的数据,使用ImageReadParam
(我也可以反过来做,但这不会让上述常见情况受益于该功能)?
我正在研究元数据支持(如 中IIOMetadata
),元数据应该报告文件中写入的方向标记,还是更新以反映旋转的图像?这就是我觉得事情崩溃的地方......这里真正的问题是,当有人读取图像和元数据时会发生什么,对图像进行一些操作并将其与元数据一起再次存储(如果作者然后进行反向旋转,还是“神奇地”丢弃方向标签并更新w/h)?
...或者,我是否应该放弃它,让客户读取 EXIF 元数据,并在需要时自行应用轮换?
欢迎来自实现者和 ImageIO 用户的意见和建议!:-)