【发布时间】:2015-07-10 08:48:55
【问题描述】:
在过去一个月左右的时间里,我一直在断断续续地解决这个错误。每次我认为我已经修复它时,它似乎都会以某种形式回来。
这是旧的 Android“图像旋转 90 度”错误。我在这里(StackOverFlow)上阅读了无数帖子,并尝试了多种方法,但似乎无法修复它。
我仍然得到旋转不正确的图像。
在我的应用程序中,用户选择他/她的个人资料图片,然后将其设置为 ImageView。图片是从手机图库中选择的
两天前,我实现了以下代码,这适用于我在手机上测试过的所有图像。然而,当我的一位 Beta 测试人员尝试它时,他的图像再次旋转。他将图像发送给我进行测试,但它们在我的手机上显示良好。这就是为什么我越来越沮丧。
这是我用来获取图像方向的方法:
// Gets an Images Orientation
public static int getOrientationEXIF(Context context, Uri uri) {
int orientation = 0;
try {
ExifInterface exif = new ExifInterface(uri.getPath());
orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
orientation = 90;
return orientation;
case ExifInterface.ORIENTATION_ROTATE_180:
orientation = 180;
return orientation;
}
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
然后我使用这个方法得到一个旋转的位图:
// Rotate a Bitmap
public static Bitmap rotate(float rotationValue, String filePath) {
Bitmap original= BitmapFactory.decodeFile(filePath);
int width = original.getWidth();
int height = original.getHeight();
Matrix matrix = new Matrix();
matrix.postRotate(rotationValue);
Bitmap rotated = Bitmap.createBitmap(original, 0, 0, width, height, matrix, true);
return rotated;
}
我只是不知道该怎么做。
如果有人能帮我解决这个问题,我真的很高兴
提前谢谢你
更新
在实施建议的方法后,我刚刚在我的日志中看到以下代码行:
JHEAD can't open 'file:/external/images/media/3885'
我不知道这是什么意思
更新 #2
我想我可能已经解决了这个问题,我得到了文件的正确图像路径。
【问题讨论】:
-
Richard - 额外的 ExifInterface Orientations 真的对你有帮助吗?抱歉耽搁了我打了一轮高尔夫球...
-
完全不用担心:)。到目前为止,似乎如此。我的一个 Beta 测试人员不在,所以他回来时会让他进行测试。但这绝对有助于解决我今天遇到的其他问题。非常感谢:)。
-
很高兴来到这里.. 再次请注意,根据实际设备硬件,每个设备的相机方向会有所不同。某些设备的边框可能会更窄,这会导致相机在任一方向上旋转 90 度或更多度。
-
我会记住这一点。非常感谢您的帮助。
标签: java android image bitmap exif