gpt4 book ai didi

Android:BitmapFactory 解码速度极慢

转载 作者:行者123 更新时间:2023-11-29 21:03:58 24 4
gpt4 key购买 nike

我打算编写一个小画廊应用程序。所以我有一个带有图像的 gridview,显示的图像被存储在本地设备上。我得到的是一个类 ImageLoader,它在后台线程 (AsyncTask) 中加载特定路径中的所有图像,并将它们存储在列表位图中,其中 ImageItem 是一个带有图像和字符串的 pojo 类。

Bitmapfactory 的解码非常非常慢(600 张图像需要 10 分钟)。如何改进以下代码以加快加载速度?也许我只需要解码图像的缩放实例?

private Bitmap getThumbnail(File f, int THUMBNAIL_SIZE) {
BitmapFactory.Options onlyBoundsOptions = new BitmapFactory.Options();
onlyBoundsOptions.inJustDecodeBounds = true;
onlyBoundsOptions.inDither = false; //optional
onlyBoundsOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; //optional
BitmapFactory.decodeFile(f.getAbsolutePath(), onlyBoundsOptions);
if ((onlyBoundsOptions.outWidth == -1) || (onlyBoundsOptions.outHeight == -1)) {
return null;
}

int originalSize = (onlyBoundsOptions.outHeight > onlyBoundsOptions.outWidth) ? onlyBoundsOptions.outHeight :
onlyBoundsOptions.outWidth;

double ratio = (originalSize > THUMBNAIL_SIZE) ? (originalSize / THUMBNAIL_SIZE) : 1.0;

BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inSampleSize = getPowerOfTwoForSampleRatio(ratio);
bitmapOptions.inDither = false;//optional
bitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;//optional
return BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions);
}

private static int getPowerOfTwoForSampleRatio(double ratio) {
int k = Integer.highestOneBit((int) Math.floor(ratio));
if (k == 0) {
return 1;
} else {
return k;
}
}

我使用的缩略图大小为 300。

最佳答案

这可能对你有帮助。您不应该一次加载所有 600 张图像。您应该只加载当前在 GridView 或 ListView 或您正在使用的任何 View 中的图像。

http://www.coderzheaven.com/2013/09/01/faster-loading-images-gridviews-listviews-android-menory-caching-complete-implemenation-sample-code/

关于Android:BitmapFactory 解码速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25105483/

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