2016-05-18 17 views
1

RecyclerViewで異なる画像を読み込み、Picassoを使用してインターネットから取得しますが、iPhoneからの画像が逆さまになってしまい、その理由がわかりません。
インターネットで正常に見えます。ピカソを使用するとランダムな画像が回転する

私のコードは次のとおりです。

Picasso.with(context) 
      .load(URLConstants.URL_BASE + imageURL) 
      .placeholder(image) 
      .error(image) 
      .into(new Target() { 
       @Override 
       public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
        Matrix matrix = new Matrix(); 
        try { 
         ExifInterface exif = new ExifInterface(URLConstants.URL_BASE + imageURL); 
         int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1); 
         Log.d("EXIF", "Exif: " + orientation); 
         if (orientation == 6) { 
          matrix.setRotate(90); 
         } else if (orientation == 3) { 
          matrix.setRotate(180); 
         } else if (orientation == 8) { 
          matrix.setRotate(270); 
         } 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
        Bitmap oriented = Bitmap.createBitmap(bitmap, 0, 0, 
          bitmap.getWidth(), bitmap.getHeight(), matrix, true); 
        imageView.setImageBitmap(oriented); 
       } 

       @Override 
       public void onBitmapFailed(Drawable errorDrawable) { 

       } 

       @Override 
       public void onPrepareLoad(Drawable placeHolderDrawable) { 

       } 
      }); 

ExifInterface exif = new ExifInterface(URLConstants.URL_BASE + imageURL); 

作品のURLを持つかどうかはわかりません。
もしそうでなければ、他にどんな方法がありますか?

+0

をこのクラスを確認することができます。私はあなたが方向を適用せずにイメージを読み込もうとするべきだと思います。 –

+0

どうすればいいですか? –

+0

単純なアプローチ、Picasso.with(コンテキスト) .LOAD(URL) .placeholder(R.drawable.user_placeholder) .ERROR(R.drawable.user_placeholder_error) .into(ImageViewのを)試してみてください。 –

答えて

0

右。このメソッドはURLでは機能しません。

ExifInterface exif = new ExifInterface(URLConstants.URL_BASE + imageURL); 

ダウンロードしたビットマップでこのコントロールをチェックする必要があります。この場合、ダウンロードされたチェックはされません。 temp.jpegのように保存することができます。それはAndroid ExifInterface.javaのメソッドです。コメントのように言います。

/** 
* Reads Exif tags from the specified JPEG file. 
*/ 
public ExifInterface(String filename) throws IOException { 
    if (filename == null) { 
     throw new IllegalArgumentException("filename cannot be null"); 
    } 
    mFilename = filename; 
    loadAttributes(); 
} 

編集

あなたは、変数値「int型のオリエンテーション」からの向きを設定している、あなたのコードから正しい方向についてhttps://github.com/eralpyucel/ProfileImage/blob/master/app/src/main/java/com/eralp/profilephoto/PhotoFunctions.java

+0

ご迷惑をおかけしました。私は携帯電話にダウンロードされた画像を保存し、はい、それは逆さの位置に格納されていますが、私のコードはまだ方向を取得していない:/。 –

+0

編集されたクラスをチェックする – eralp

関連する問題