使用毕加索时,随机图像会旋转

时间:2016-05-18 17:49:45

标签: android picasso

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

是否适用于网址。
如果他们不这样做,我还有其他什么方式?

1 个答案:

答案 0 :(得分: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