Android:如何在不加载完整位图的情况下即时渲染流式图像到ImageView?

Anv*_*war 6 android render bitmap imageview progressive

我正在从URL加载图像以显示在ImageView中.标准方法是按如下方式创建位图(其中InputStream is已从URL获取):

Bitmap bm = BitmapFactory.decodeStream(is);
Run Code Online (Sandbox Code Playgroud)

但我正在处理大图像,我想在整个图像加载到位图之前开始显示像素,即我希望实现图像的渐进式渲染(类似于在Web浏览器中加载大图像).例如,如果图像是隔行扫描的PNG,这将允许我在等待加载完整图像时向用户显示较低质量的图像.基本上,我想实现渲染,如http://www.codinghorror.com/blog/2005/12/progressive-image-rendering.html所示

我知道如果我可以实现一个PNG解码器,或者使用一个开源实现,我可以修改它以便在我读取它们时立即将像素渲染到ImageView的位图,但这看起来像是我想要的巨大努力.

Sta*_*der 0

简单的渐进式接收渲染:这是通过考虑传输网络层(TCP)来实现的。按顺序接收到的每个数据包都会在应用层中传递并立即显示。如果您希望实现这一目标,那么您需要考虑在应用程序中进行套接字编程。

然而,这是一种旧方法,实际上计算量更大。我个人更喜欢使用存根图像进行锻炼。存根图像在开始时显示,并启动具有 url 连接和下载(管理器或缓存)的即时线程。下载完成后,您将返回主线程来更新照片。这更有组织性。

如果我在任何意义上错了,请纠正我。