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

标签 android bitmap imageview render progressive

我正在从 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/

相关文章:

android - 单击 View 时在 View 上显示透明颜色突出显示

android - 在 kotlin 中声明单例

android - 绘制一个平铺在 Rect android 上的位图

java - R.styleable无法解析

android - 如何以编程方式多次更改 ImageView 源?

php - 如何从php服务器获取json数据到android mobile

android - Mapbox Directions API 返回状态代码为 422 的不可用响应

java - 为什么我的位图排序没有比我的归并排序快无限?

java - 我如何追踪哪个图像是我的应用程序的 killer ?

android - 如何使用 Mobile Vision API 获取图像中文本的位置?