【发布时间】:2011-09-25 11:16:45
【问题描述】:
这是我最后一个问题的后续:Canvas is drawing too slowly
现在我可以更快地绘制图像,但我面临的问题是图像的实际加载时间太长了。
在我正在开发的应用程序中,用户可以连续播放视频帧 (jpeg),就好像他正在实时观看视频一样。我一直在使用BitmapFactory.decodeFile() 在位图中加载每个 jpeg。我无法一次加载所有图像,因为大约有 240 张图像,这会占用我所有的堆空间。我一直在做的是通过单独的线程一次将最多 6 个预加载到一个数组中,以减少每个图像显示所需的时间。
不幸的是,加载一张图片需要 50 到 90 毫秒,我需要每 42 毫秒显示一张图片。有没有更快的方法来加载图片?
为澄清起见,这些图像位于 SD 卡上的一个文件夹中,它们都是 720x480 的 jpeg。我以一半大小对它们进行采样以减少内存使用量。
【问题讨论】:
-
您是否发现使用内部存储器或使用 png 代替 jpeg 时有什么不同?
-
我还没有尝试过内部存储器,我想我会试一试。我开始使用 png,但它们比 jpeg 大得多,并且 jpeg 在设备上已经占用了大约 8MB。
-
使用内部存储器确实似乎快了一点,但对于我正在做的事情来说仍然不够快。我认为我真正需要的是一种在不牺牲质量的情况下存储所有图像的方法。如果我将 inSampleSize 设置为 4,我可以将它们全部存储在内存中,但质量会大幅下降。
标签: java android image bitmap bitmapfactory