如何在纵向模式下设置拍摄的图像

时间:2013-06-13 09:14:52

标签: android android-camera

我正在开发一个应用程序,我已经为用户提供了使用移动相机拍照的功能,然后我在Imageview中显示图像。

现在的问题是,如果我以纵向模式或横向模式捕获图像,它总是在ImageView中以横向模式设置图像,但我希望图像仅在纵向模式下设置。请帮我解决这个问题。

任何帮助都会很明显......

谢谢

3 个答案:

答案 0 :(得分:5)

Matrix mat = new Matrix();

ExifInterface exif = new ExifInterface(yourimagepath);
String orientstring = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
int orientation = orientstring != null ? Integer.parseInt(orientstring) : ExifInterface.ORIENTATION_NORMAL;
int rotateangle = 0;
if(orientation == ExifInterface.ORIENTATION_ROTATE_90) 
            rotateangle = 90;
if(orientation == ExifInterface.ORIENTATION_ROTATE_180) 
            rotateangle = 180;
if(orientation == ExifInterface.ORIENTATION_ROTATE_270) 
            rotateangle = 270;

mat.setRotate(rotateangle, (float) bmpPic.getWidth() / 2, (float) bmpPic.getHeight() / 2);

File f = new File(yourimagepath);       
Bitmap bmpPic = BitmapFactory.decodeStream(new FileInputStream(f), null, null); 
Bitmap bmpPic1 = Bitmap.createBitmap(bmpPic, 0, 0, bmpPic.getWidth(), bmpPic.getHeight(), mat, true);   

答案 1 :(得分:2)

像那样使用

Matrix matrix=new Matrix();
imageView.setScaleType(ScaleType.MATRIX);   //required
matrix.postRotate((float) angle, pivX, pivY);
imageView.setImageMatrix(matrix);

表示exp:

matrix.postRotate( 90f, imageView.getDrawable().getBounds().width()/2, imageView.getDrawable().getBounds().height()/2)

答案 2 :(得分:-1)

这是我遇到的一个很好的解决方案:

  

https://stackoverflow.com/a/34241250/8033090

一线解决方案:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

Picasso.with(context).load("file:" + photoPath).into(imageView);

这将自动检测旋转并将图像放置在正确的方向

Picasso是一个非常强大的库,用于处理应用中的图像,包括:复杂的图像转换,内存使用最少。加载可能需要一秒钟,但我只是在图像视图后面放了一些文字,上面写着“正在加载图片”,当图片加载时,它会覆盖文字。