Android開発携帯電話(サムスン)写真アプリ写真回転問題解決方法

1758 ワード

Android開発携帯電話(サムスン)写真アプリ写真回転問題解決方法
最近1つの私を悩ませる长い问题を解决して、サムスンの携帯电话の写真を撮るピクチャーの回転の问题で、プロジェクトの中でピクチャーをアップロードする机能があって、それでは写真を撮ることに関连して、アルバムの中からピクチャーを选んで、他の携帯电话はすべて问题がなくて、サムスンの携帯电话だけが写真を撮った后で、あなたはとてもはっきりと写真を回転することができて、それからあなたが経路によって探し当てるピクチャーはすでに回転されたので、解決策はやっと私に見つかった.写真exif(Exchangeable Image File)情報の回転角度を画像の経路に従って読み取ることができます.
デバッグによると、サムスンが撮影した画像の回転角度は90度で、他の携帯電話の回転角度は0度であることが明らかになった.
コードを見てみましょう.

/** 
   *     exif         
   * @param path      
   * @return   
   */ 
  public static int readPictureDegree(String path) { 
    int degree = 0; 
    try { 
      ExifInterface exifInterface = new ExifInterface(path); 
      int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); 
      switch (orientation) { 
        case ExifInterface.ORIENTATION_ROTATE_90: 
          degree = 90; 
          break; 
        case ExifInterface.ORIENTATION_ROTATE_180: 
          degree = 180; 
          break; 
        case ExifInterface.ORIENTATION_ROTATE_270: 
          degree = 270; 
          break; 
      } 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
    return degree; 
  } 

では、回転角度に合わせて画像を回転させるだけでOKです

public static Bitmap toturn(Bitmap img){ 
    Matrix matrix = new Matrix(); 
    matrix.postRotate(+90); /*  90 */ 
    int width = img.getWidth(); 
    int height =img.getHeight(); 
    img = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true); 
    return img; 
} 

読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!