在imageview中常常会因为手机本身的关系使显示的图片呈现转置的情况,这是我们就可以使用以下的方法进行转置。
bm = BitmapFactory.decodeFile(picPath);
//照片显示的转置
ExifInterface exif = null;
try {
exif = new ExifInterface(picPath);
} catch (IOException e) {
e.printStackTrace();
exif = null;
}
int digree=0;
if (exif != null) {
// 读取图片中相机方向信息
int ori = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_UNDEFINED);
// 计算旋转角度
switch (ori) {
case ExifInterface.ORIENTATION_ROTATE_90:
digree = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
digree = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
digree = 270;
break;
default:
digree = 0;
break;
}
}
if (digree != 0) {
// 旋转图片
Matrix m = new Matrix();
m.postRotate(digree);
bm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
bm.getHeight(), m, true);
}
//旋转结束
imageView.setImageBitmap(bm);
另外,我们还可以在xml文件中直接imageView中设置scaleType属性,也可以实现一部分显示的需求。
其中可以填写的值
matrix 用矩阵来绘制(从左上角起始的矩阵区域)
fitXY 把图片
不按比例扩大/缩小到View的大小显示(确保
图片会完整显示,并充满View)
fitStart 把图片
按比例扩大/缩小到View的宽度,显示在View的上部分位置(
图片会完整显示)
fitCenter 把图片
按比例扩大/缩小到View的宽度,居中显示(
图片会完整显示)
fitEnd 把图片
按比例扩大/缩小到View的宽度,显示在View的下部分位置(
图片会完整显示)
center 按图片的原来size居中显示,当图片宽超过View的宽,则截取图片的居中部分显示,当图片宽小于View的宽,则图片居中显示
centerCrop 按 比例扩大/缩小图片的size居中显示,使得图片的高等于View的高,使得图片宽等于或大于View的宽
centerInside 将 图片的内容完整居中显示,使得图片按比例缩小或原来的大小(图片比View小时)使得图片宽等于或小于View的宽 ( 图片会完整显示)