多张图像缺乏内存[关闭]

Posted

技术标签:

【中文标题】多张图像缺乏内存[关闭]【英文标题】:Lack of memory with multiple images [closed] 【发布时间】:2013-09-13 23:03:52 【问题描述】:

在我的应用程序中,我必须管理由 android 相机拍摄的大量图像。

问题是当我有很多图片时,手机内存不足并且运行速度很慢。 我希望仍然能够管理相同数量的图像,但没有内存问题

关于我应该做些什么来实现这一点有什么建议吗?

【问题讨论】:

发布代码时内存不足的地方 管理得更好?没有代码,我们无能为力... 这个问题如何获得 5 票?难以置信! 问题被问得很糟糕,也许不是为了适度关注,但在我看来不应该被赞成 【参考方案1】:

您应该解码缩放的图像。 您可以通过将 JPEG 扩展为已缩放以匹配目标视图大小的内存数组来减少使用的动态堆的数量。 以下示例方法演示了这种技术:

private void setPic() 
    // Get the dimensions of the View
    int targetW = mImageView.getWidth();
    int targetH = mImageView.getHeight();

    // Get the dimensions of the bitmap
    BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bmOptions.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
    int photoW = bmOptions.outWidth;
    int photoH = bmOptions.outHeight;

    // Determine how much to scale down the image
    int scaleFactor = Math.min(photoW/targetW, photoH/targetH);

    // Decode the image file into a Bitmap sized to fill the View
    bmOptions.inJustDecodeBounds = false;
    bmOptions.inSampleSize = scaleFactor;
    bmOptions.inPurgeable = true;

    Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
    mImageView.setImageBitmap(bitmap);

阅读更多here。

【讨论】:

以上是关于多张图像缺乏内存[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

随机图像显示[关闭]

Silverlight 图像编辑器控件 [关闭]

Android在Imagebutton上设置动态图像[关闭]

从内存中读取图像,知道指向内存的指针。 VC++ [关闭]

SwiftUI 多张纸:关闭动画损坏

在 UserDefaults 中将图像存储为 base64 的内存性能 [关闭]