如何在收到所有数据之前开始显示隔行扫描的PNG?

Not*_*Dan 6 .net c# gdi+ winforms

我有一个缓慢的连接,我需要发送PNG图像(作为字节流)并立即显示图像.我有一个C#WinForms应用接受byte [],将其加载到内存流中,并从中创建一个System.Drawing.Image/Bitmap对象.

我想要做的是向下发送超低分辨率图像,然后逐步更新它,以便在接收到数据时更清晰.看起来PNG支持隔行扫描的图像,它可以满足我的需求.

是否有可能在收到所有数据之前开始显示PNG,并且随着其余部分的进入逐渐增加它?我怎样才能做到这一点?

Joh*_*n K 2

您必须以符合Adam7 算法的方式传递字节。也许可以在 Google 上搜索到一个第三方库,该库以这种方式传递字节,从而减轻了繁重的工作。

这是它的作用的直观示例。

编辑Windows 版 LibPNG 可能是一个开始。当然,它的 DLL 需要您的 .NET 程序与非托管代码和非 MSIL 程序集进行交互,这是另一个故事,我确信它已发布在 stackoverflow 上的其他地方 - 或者也许您可以专门为其创建另一个问题。LibPNG 是一个开源项目,因此查看其源代码可能会提供对 Adam7 算法的深入了解,该算法可以用 C#/.NET 重新编码。