我正在从 URL 加载图像以显示在 ImageView 中。标准方法是创建位图如下(其中 InputStream 是
已经从 URL 中获取):
Bitmap bm = BitmapFactory.decodeStream(is);
但我正在处理大图像,我想在整个图像加载到位图中之前开始显示像素,即我想要实现图像的渐进式渲染(类似于在网络浏览器中加载大图像)。例如,如果图像是交错的 PNG,这将允许我在用户等待完整图像加载时向他们显示质量较低的图像。 基本上,我想实现如 http://www.codinghorror.com/blog/2005/12/progressive-image-rendering.html 所示的渲染。
我知道如果我可以实现一个 PNG 解码器,或者使用一个开源实现,我可以修改它以在我读取它们时立即将像素渲染到 ImageView 的位图中,但这看起来像我想要的那样巨大的努力。
最佳答案
Simple progressive as-received rendering:这是通过考虑传输网络层 (TCP) 实现的。每个按顺序接收的数据包都会在立即显示的应用层中传递。如果您希望实现这一点,那么您需要考虑在您的应用程序中进行套接字编程。
但是,这是一种旧方法,实际上计算量更大。我个人更喜欢使用 stub 图像。 stub 图像显示在开始处,并启动具有 url 连接和下载(管理器或缓存)的即时线程。下载完成后,您将返回主线程更新照片。这样更有条理。
如果我有任何错误,请纠正我。
关于Android:如何在不加载完整位图的情况下即时将流式图像渲染到 ImageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17187023/