JPEG图像中有时会包含EXIF元数据,其中说明了图像应该显示的方向。
问题是,Java的ImageIO.read()
在读取JPEG图像时是否考虑EXIF,并自动应用转换。
更具体地说,如果我使用Java的ImageIO
将带有EXIF的JPEG图像转换为PNG图像,PNG图像的方向是否正确?或者下面的代码是否会生成一个不考虑EXIF方向指令的PNG图像?
private byte[] convertToPng(byte[] imageFileAsByteArray) {
ByteArrayInputStream bis = new ByteArrayInputStream(imageFileAsByteArray);
BufferedImage bi = ImageIO.read(bis);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(bi, "png", bos);
return bos.toByteArray();
}
ImageIO.read()
不会读取您的 exif。您应该使用ImageReader
类来读取和复制图像元数据。 - Planck ConstantImageIO.read()
的作用只是为图像类型构建一个适当的ImageReader
并调用它。因此很难看出它如何避免处理 EXIF 元数据。 - user207421