【发布时间】:2019-05-11 09:33:11
【问题描述】:
我的应用拍摄照片,执行一些处理,并确保它们包含在 Android 图库中。
我遇到的问题是,当我打开图库中的图像时,它们没有正确旋转 - 尽管检查 Exif 数据显示方向标签 is 已设置并且看起来是正确的。如果我将它加载到 Exif 检查工具中,它会说“方向:旋转 90 CW”,但我注意到其他应用程序,如 Gimp,似乎也错过了 Exif 数据,所以我想知道是否有问题我存储的数据。
我的 Exif 定向代码是这样写的:
private void writeOrientation(int orientation, String path) {
try {
int exifOrientation = ExifInterface.ORIENTATION_NORMAL;
if (45 < orientation) {
if (orientation <= 135) {
exifOrientation = ExifInterface.ORIENTATION_ROTATE_90;
} else if (orientation <= 225) {
exifOrientation = ExifInterface.ORIENTATION_ROTATE_180;
} else {
exifOrientation = ExifInterface.ORIENTATION_ROTATE_270;
}
}
ExifInterface exif = new ExifInterface(path);
exif.setAttribute(ExifInterface.TAG_ORIENTATION, String.valueOf(exifOrientation));
exif.saveAttributes();
} catch (Exception e) {
Log.w(TAG, "Failing to write orientation: " + e.getMessage());
Log.getStackTraceString(e);
}
}
这似乎确实有效 - 在我自己的代码中,我正在根据图像的方向旋转图像,它看起来很正常。但是在画廊中,我所有的肖像图像仍然显示为风景。
图库是否使用 Exif 数据来旋转图像?如果没有,它确实使用了其他东西,还是我应该用旋转版本覆盖图像?如何确保加载我的图像的图库和其他应用程序具备以正确方向显示它们所需的一切?
【问题讨论】: