3

私は、モバイルカメラを使用して写真を撮ることができる機能をユーザーに提供し、その画像を Imageview に表示するアプリケーションに取り組んでいます。

問題は、ポートレート モードまたはランドスケープ モードで画像をキャプチャしている場合、常に ImageView で画像をランドスケープ モードに設定することですが、画像をポートレート モードのみに設定したいということです。この問題で私を助けてください。

どんな助けもかなりのものです...

ありがとうございました

4

3 に答える 3

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);   
于 2013-06-13T09:20:29.193 に答える
2

そのように使う

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

経験値の場合:

matrix.postRotate( 90f, imageView.getDrawable().getBounds().width()/2, imageView.getDrawable().getBounds().height()/2)
于 2013-06-13T09:31:56.547 に答える