2016-05-18 9 views
1

Я загружаю разные изображения в свой RecyclerView, и я использую Picasso для их получения из Интернета, но случайным образом изображение с iPhone поворачивается вверх ногами, и я не понимаю, почему.
В интернете все выглядит хорошо.Случайное изображение поворачивается при использовании picasso

мой код:

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

Вы должны проверить этот элемент управления на загруженном Bitmap. В этом случае он не проверяет загруженный. Вы можете сохранить его как 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(); 
} 

Отредактировано

Вы можете проверить этот класс для правильной ориентации https://github.com/eralpyucel/ProfileImage/blob/master/app/src/main/java/com/eralp/profilephoto/PhotoFunctions.java

+0

извините за ответ поздно. хорошо я сохраняю загруженное изображение в телефоне и да, оно хранится в перевернутом положении, но мой код все еще не набирал ориентацию: /. –

+0

проверить класс на редактируемый – eralp

Смежные вопросы