Android读取手机文件图片展示会自动翻转问题

1、问题

使用以下方式使用ImageView显示手机内存文件图片时会翻转90度

imageView.setImageBitmap(rotatedBitmap)

2、原因

Android中的图片旋转问题通常与图片的Exif信息有关。Exif是一种图像文件格式,它可以存储有关照片的元数据,例如拍摄时间、相机品牌、拍摄方向等。

某些相机应用程序在拍摄照片时会将拍摄方向信息保存到Exif数据中,因此在读取这些照片时,Android将根据Exif数据中的信息来旋转图片以确保它们正确显示。

当使用Android的相机应用程序拍摄照片时,它会根据设备的方向将照片保存在正确的方向上。例如,如果你将设备旋转到横向模式拍摄照片,那么照片将被保存为横向方向,并且Exif数据中将包含旋转方向信息。当你从文件中读取这些照片时,Android将使用Exif数据来旋转图片以确保它们正确显示。

3、解决方法

如果你的应用程序中读取的图片发生了旋转,你可以使用ExifInterface类来读取图片的Exif数据,并根据其中的旋转信息来旋转图片。例如,以下代码可以帮助你读取图片的Exif数据并旋转图片:

ExifInterface exif = new ExifInterface(filePath); 
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); 
Matrix matrix = new Matrix(); 
switch (orientation) { 
    case ExifInterface.ORIENTATION_ROTATE_90: 
        matrix.postRotate(90); 
        break; 
    case ExifInterface.ORIENTATION_ROTATE_180: 
        matrix.postRotate(180); 
        break; 
    case ExifInterface.ORIENTATION_ROTATE_270: 
        matrix.postRotate(270);
        break; 
    default: 
        break;
} 
Bitmap bitmap = BitmapFactory.decodeFile(filePath); 
Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);

在这个例子中,我们首先使用ExifInterface类来读取图片的Exif数据,然后根据旋转信息创建一个旋转矩阵,最后使用Bitmap.createBitmap()方法来旋转图片。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值