将 SD 卡中的图像加载到视图中的最快方法是什么

发布于 2024-10-21 14:34:23 字数 305 浏览 0 评论 0原文

我想实现一个图片库,但我对解决方案的性能不满意。我的应用程序创建小缩略图(大约 1k 文件大小/64x64px)并将它们存储到 SD 卡上。 将这些图像从 SD 卡加载到视图中会花费一些时间(每个缩略图 20 毫秒),并导致图库滚动不顺畅。

我尝试使用 BitmapFactory.decodeStream 或 BitmapDrawable(InputStream) 加载图像。我不想要完整的内存缓存,因为 - 取决于图片的数量 - 可能会发生内存不足,并且缓存任务的初始创建会花费很多时间。

有人知道如何以更快的方式加载图像吗?框架是免费的吗?或者或者或者...

I want to implement a picture gallery and I'm not satisfied with the performance of my solution. My application creates small thumbnails (around 1k file size / 64x64px) and stores them onto SD card.
Loading these images from SD card into a view costs some time (20ms per thumbnail) and causes that the gallery does not scroll very smooth.

I've tried loading the image using BitmapFactory.decodeStream or BitmapDrawable(InputStream). I don't want a full memory cache, because - depends on the number of pictures - OutOfMemory can occour and the initial creation of the cache tasks a lot of time.

Has anybody an idea how to load the images in a faster way? Are the framworks for free? Or or or...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我的影子我的梦 2024-10-28 14:34:23

我建议您阅读“文件 I/O 和效率”在 Android Google 群组上发帖。经过基准测试,作者得出的结论是,最有效的文件 I/O 方式是“在内存映射的 ByteBuffer 上进行批量操作”。

在您的情况下,使用一个大文件来存储缩略图可能比使用数百个小文件更有效。您可能还需要一个单独的文件进行索引(例如,用于文件名/编号和大缩略图文件中的开始/结束位置之间的映射)-但这取决于您的逻辑。

I suggest you to read "File I/O and efficiency" post on Android Google groups. After the benchmarks author came to the conclusion that the most efficient way of file I/O is "batch operation on a memory mapped ByteBuffer".

In your case it may be more efficient to use one big file for thumbnails storage instead of hundreds of small ones. You may also need a separate file for indexing (e.g. for mapping between file name/number and start/end position in big thumbnail file) - this however depends on your logic.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文