将 SD 卡中的图像加载到视图中的最快方法是什么
我想实现一个图片库,但我对解决方案的性能不满意。我的应用程序创建小缩略图(大约 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议您阅读“文件 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.