从 URI 加载特定尺寸的图像,保留纵横比

Posted

技术标签:

【中文标题】从 URI 加载特定尺寸的图像,保留纵横比【英文标题】:Load image from URI in specific dimensions preserving aspect ratio 【发布时间】:2015-07-25 22:04:43 【问题描述】:

我有一个图像的 URI,我试图将其加载到 imageView 中。

Uri imageUri = /* URI goes here */
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
Imageview iv = (Imageview) findViewById (R.id.my_img_view);
iv.setImageBitmap(bitmap); 

图像以全分辨率加载(高达 21 兆像素导致内存不足异常)。我的应用不需要使用全分辨率图像,因此我希望缩小图像以满足以下条件:

    如果图像高度大于宽度(即纵向),则将宽度缩放为 1024 像素,并将高度缩放为适当的值以保持纵横比。

    如果图像宽度大于高度(即横向),则将高度缩放为 1024 像素,并将宽度缩放为适当的值以保持纵横比。

    如果图片为正方形,则将其缩放为 1024x1024

有什么方法可以在将位图应用到 imageView 之前缩放位图(甚至在 Media.getBitmap 之前更好)?

【问题讨论】:

【参考方案1】:

试试这个库: https://github.com/androidDeveloperLB/AndroidJniBitmapOperations

这个库涵盖了几乎所有的位图操作,如缩放、旋转、裁剪等

【讨论】:

@BuggyCoder - 如果你选择这个答案,你可能想看看这个问题:***.com/questions/18250951/… 嗯,我真的必须使用 3rd 方库来完成诸如调整图像大小之类的基本任务吗?有时我想知道为什么android中的基本功能如此复杂:-/ 我在这里找到了一些解决方案。 ***.com/questions/4837715/…

以上是关于从 URI 加载特定尺寸的图像,保留纵横比的主要内容,如果未能解决你的问题,请参考以下文章

处理不同尺寸的延迟加载图片的纵横比,避免内容跳转

具有自动布局和最大尺寸保持纵横比的 UIImageView

为啥传感器尺寸的纵横比和图像分辨率的纵横比不同?

调整图像大小并裁剪为新的纵横比

调整图像大小以保持纵横比并使纵向和横向图像尺寸完全相同?

WPF的窗口中的所有内容随窗口大小变化而同步变化