android - 照片显示在图像按钮

时间:2017-04-26 11:58:37

标签: java android image

我有这个代码在用户选择后在图像按钮中显示图像。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);

    Uri selectedImageUri = data.getData();
    if (null != selectedImageUri) {
       // Set the image in ImageView
        _changePicture.setImageURI(selectedImageUri);
    }
}

我的问题是,当选择一个大图像时,它会显示为向左旋转90度。我在stackoverflow.com找到了一些解决方案,但我不能使用它们中的任何一个,因为它们使用“Image”而我只使用“Uri”。

编辑: 使用像这样的代码:

public static void rotateImageIfRequired( Uri selectedImage) throws IOException {

        ExifInterface ei = new ExifInterface(selectedImage.getPath());
        int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

        switch (orientation) {
            case ExifInterface.ORIENTATION_ROTATE_90:
                Log.e(TAG,"ROTATE = 90");
            case ExifInterface.ORIENTATION_ROTATE_180:
                Log.e(TAG,"ROTATE = 180");
                //return rotateImage(img, 180);
            case ExifInterface.ORIENTATION_ROTATE_270:
                Log.e(TAG,"ROTATE = 270");
                //return rotateImage(img, 270);
            default:
                Log.e(TAG,"ROTATE = 0");
                //return img;
        }
    }

返回“ROTATE = 0”。有些图像是几天前拍摄的。所有这些都很大。在小图像中不会发生旋转。

1 个答案:

答案 0 :(得分:1)

您尝试使用Picasso Library了吗?如果您想了解更多相关信息,可以在GitHub上关注他们的示例。

要从设备加载图像,您可以使用:

File f = new File("path-to-image/image.png")

File f = new File(uri)

Picasso.with(getActivity()).load(f).into(imageView);

Picasso.with(getActivity()).load(uri).into(imageView);

毕加索还提供图像转换:

Picasso.with(context)
  .load(url)
  .resize(50, 50)
  .centerCrop()
  .into(imageView)