android - 相机文件夹图像出现旋转

标签 android android-gallery

我正在尝试在我的应用程序中处理图像。我目前面临的问题与图像的方向有关。从 Android 的相机文件夹中选择的图像的缩略图显示为 90 度旋转。我得到的缩略图如下;

    Uri thumbUri = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, uri.getLastPathSegment());
    if (thumbUri != null){
        try {
            List<String> parts = uri.getPathSegments();
            String lastPart = parts.get(parts.size() - 1);
            int index = lastPart.indexOf(":");
            if (index != -1)
            {
                lastPart = lastPart.substring(index+1);
            }
            long id = Long.parseLong(lastPart);

            // get a thumbnail for the image
            Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(
                    context.getContentResolver(),
                    id,
                    MediaStore.Images.Thumbnails.MINI_KIND,
                    null
            );
            if (bitmap != null)
            {
                return bitmap;
            }
        }
        catch (Exception e)
        {
            Log.e(LOG_TAG, "Unable to generate thumbnail from thumbnail uri " + e.getMessage(), e);
        }

    }

还尝试通过从 ExifInterface 中读取方向来修复它;

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

但是返回的orientation总是0ORIENTATION_UNDEFINED。无法理解我在这里做错了什么。

最佳答案

得到解决方案。我使用了来自 BitmapUtilgetThumbnail(ContentResolver contentResolver, long id) 方法它从游标中读取图像的元数据,然后进行相应的处理。

感谢Jason Fry对于这个有用的实用程序。

关于android - 相机文件夹图像出现旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27755040/

相关文章:

Android:版本 21 未出现在 SDK 管理器中

Android - 通过解码文件或解码流将选定的 Uri 转换为位图时出现内存不足错误

Android:实现只加载新页面的ViewPager

Android 以编程方式创建 ViewPager

java - 播放响亮声音的自动音量控制

java - Android 和 Java 程序之间的 Socket 编程问题

android - Cordova Android Plugin : config. xml 被cordova 覆盖准备好了吗?

Android Gallery Image Adapter onItemClickListener 没有被调用等问题

java - 用于将缩略图动画化到全尺寸屏幕的开源库,类似于 Facebook

android - 如何在 Android 7.0 中从相机或图库中选择要裁剪的图像?