在我的项目中,我想选择图像到图库并在回收视图中添加这些图像。 Hovewer当我选择垂直手机相机拍照时,它返回
反向高度和宽度。水平相机图像变为真实。顺便说一下,当有人从某个地方发送垂直图像时,它将返回true。我看到日志,它说:
D/height : 2322 , D/width: 4128
用于垂直图像。但事实恰恰相反。
这是我的获取高度和宽度代码:
public int drawableWidthFromPath(String path,int width)throws IOException{
File imgFile = new File(path);
int newWidth=0;
if(imgFile.exists())
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imgFile.getAbsolutePath(), options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
Log.d("height", String.valueOf(imageHeight));
Log.d("width", String.valueOf(imageWidth));
newWidth = width*imageWidth/imageHeight;
}
return newWidth;
}
此代码适用于:水平外包图像,垂直外包图像,水平相机图像,但不适用于垂直相机图像。顺便说一下我试试
Bitmap x = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
x.getHeight();
x.getWidth();
我看看twitter照片选择它显示图片完全正确。我的问题在哪里感谢
答案 0 :(得分:0)
这是解决方案:
switch(orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
selectedBitmap =rotateImage(selectedBitmap, 90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
selectedBitmap = rotateImage(selectedBitmap, 180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
selectedBitmap = rotateImage(selectedBitmap, 270);
break;
case ExifInterface.ORIENTATION_NORMAL:
selectedBitmap = rotateImage(selectedBitmap, 0);
default:
break;
}