gpt4 book ai didi

android - 在 Android 中显示来自 SD 卡的大图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:12:16 24 4
gpt4 key购买 nike

在 Android 中,如何显示 SD 卡中的图像(任意大小),不会出现内存不足错误

是否需要先将图片放入Media Store?

一个伪代码示例将不胜感激。 如果显示的图像与设备的内存级别允许的一样大,则加分

最佳答案

编辑:这个问题实际上已经在Strange out of memory issue while loading an image to a Bitmap object 得到了回答。 (两个投票最高的答案)。它也使用 inSampleSize 选项,但使用一个小方法来自动获取适当的值。

我原来的回答:

BitmapFactory.Options 类的 inSampleSize 可以解决您的问题 ( http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize )。它的工作原理是制作一个位图,生成的宽度和高度比原始宽度和高度高 1/inSampleSize,从而减少内存消耗(通过 inSampleSize^2?)。使用前应阅读文档。

例子:

BitmapFactory.Options options = new BitmapFactory.Options();
// will results in a much smaller image than the original
options.inSampleSize = 8;

// don't ever use a path to /sdcard like this, but I'm sure you have a sane way to do that
// in this case nebulae.jpg is a 19MB 8000x3874px image
final Bitmap b = BitmapFactory.decodeFile("/sdcard/nebulae.jpg", options);

final ImageView iv = (ImageView)findViewById(R.id.image_id);
iv.setImageBitmap(b);
Log.d("ExampleImage", "decoded bitmap dimensions:" + b.getWidth() + "x" + b.getHeight()); // 1000x485

但是这里它只适用于图像,我猜,inSampleSize^2 倍于允许的内存大小,并且会降低小图像的质量。诀窍是找到合适的 inSampleSize。

关于android - 在 Android 中显示来自 SD 卡的大图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com