2017-04-05 18 views
1

私のプロジェクトでは、画像をギャラリーに選択し、これらをリサイクルビューの内側に追加したいと考えています。 Hovewer私は垂直電話カメラの撮影画像を選択すると、逆の高さと幅 を返します。水平のカメラ画像が真になります。ところで、誰かが垂直の画像をどこかから送ると、それは真実を返します。ログを見て、それは言う: D/height : 2322 , D/width: 4128垂直イメージのため。しかしそれは逆です。水平アウトソース画像、縦アウトソース画像、水平方向のカメラ画像が、垂直方向のカメラ画像のためではない作品:Androidカメラの画像の高さと幅が正しくない

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; 
    } 

このコードはのために働く:

は、ここに私のget高さと幅のコードです。私は

Bitmap x = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
x.getHeight(); 
x.getWidth(); 

を試しところでしかし、結果はsame.Hereは私が午前かについて、いくつかのSSです: wrong size picturetrue size here

と私はそれが完全に真の画像を表示Twitterの写真チューを見てください。私の問題はどこにあるの?おかげ

答えて

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; 
     } 
関連する問題