繁体   English   中英

从文件加载大图像

[英]Load huge image from file

我正在使用存储在Environment.getDataDirectory()上的图片,它们的宽度为1920宽,高度为1080,我想使用以下代码将它们加载到图像视图中:

File imgFile = new File(Environment.getDataDirectory() + "/data/com.My.Package/files/Pictures/Sun.jpg");                
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
                zoomImage.setImageBitmap(myBitmap);

但是在Android 6.0 (Samsung Galaxy S6 Edge)上出现此错误 ,在Android 5 (HTC One)上运行良好

W / OpenGLRenderer:位图太大,无法上传到纹理中(3240x5760,max = 4096x4096)

因此,现在提出一个问题:有没有办法避免这种错误并且没有质量下降(我将需要这种质量,因为您可以缩放图像)

如您的错误所指出,图像太大,无法加载。

基本上,现在您要将整个图像加载到内存中。

您必须获得较小的/按比例缩小的位图版本。

您可以使用BitmapFactory.Options轻松完成此操作,

这是一个链接,其中详细介绍了用于此目的的推荐技术:developer.android.com/training/displaying-bitmaps/load-bitmap.html

我认为您应该尝试使用Glide加载它。

该过程非常简单,快速,并且希望不会有任何OOM。

只需在build.gradle编译它

 compile 'com.github.bumptech.glide:glide:3.7.0'

接着

Glide
    .with(this)
    .load(imgFile)
    .into(zoomImage);

就是这样,您再也不会希望再面对OOM了,我在许多应用程序中处理过图像,而我也从未面对过OOM

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM