har*_*ldK 4 java jpeg exif javax.imageio
我一直在研究用于读取 JPEG 的 ImageIO 插件一段时间。我想要实现的功能之一是根据 EXIF/TIFF 方向标签(如果存在)自动旋转图像。
我不是在问如何实现旋转本身,而是我的问题是 ImageReader API。对于许多用户来说,ImageIO.read(myJPEG)他们所做的只是简单地打电话,我认为他们很高兴将图像旋转到正确的方向。但是,如果您查看ImageReaderAPI,它有许多方法可以获取有关图像的信息和元数据,也有多种方法可以读取像素数据。
我是否应该公开一种方法来读取文件中的数据,使用ImageReadParam(我也可以反过来做,但这不允许上述常见情况受益于该功能)?
我正在研究元数据支持(如IIOMetadata),元数据是否应该报告文件中写入的方向标签,或者更新以反映旋转的图像?这就是我觉得事情崩溃的地方......这里真正的问题是当有人读取图像和元数据时会发生什么,对图像进行一些操作并将其与元数据一起再次存储(如果作者然后进行相反的旋转,或“神奇地”丢弃方向标签并更新 w/h)?
...或者,我是否应该放弃它,让客户读取 EXIF 元数据,并在需要时自行应用轮换?
欢迎来自实施者和 ImageIO 用户的意见和建议!:-)
不旋转图像的原因
旋转图像的原因
我认为 ImageIO 应该旋转图像并更新 Exif。这样开发人员就可以使用 ImageIO 而不必担心图像文件格式。并且新的 JPEGReader 的行为与旧的兼容。
附加功能将是
我认为我们应该抛开过去(Exif 不是标准),并考虑将 Exif 中的方向作为 JPEG 的一部分。但我认为在将像素放入内存或屏幕时,我们仍然应该忽略所有其他 Exif 信息;-)