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

问题描述:

我有一个缓慢的连接,我需要发送一个PNG图像(作为字节流),并立即显示图像。我有一个C#WinForms应用程序接受byte [],将其加载到内存流中,并从中创建一个System.Drawing.Image/Bitmap对象。如何在接收到所有数据之前开始显示隔行PNG?

我想要做的是发送一个超低分辨率的图像,然后逐步更新它,以便它在接收数据时变得更清晰。它看起来像PNG支持交错的图像,正是我想要的。

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

您必须以符合Adam7 algorithm的方式传递字节。可能是一个第三方库可以谷歌搜索,提供字节在这样的方式来解决困难的工作。

这是visual example它会做什么。

编辑LibPNG for Windows might be a start。当然,它的DLL会要求你的.NET程序与非托管代码和非MSIL程序集进行交互,这是我确信在另一个*上发布的另一个故事 - 或者你可能会特别为它创建另一个问题。 LibPNG是一个开源项目,因此查看其源代码可能会提供有关可以在C#/ .NET中重新编码的Adam7算法的信息。

+0

谢谢,我希望有更多的*自动*解决方案,我想这里没有一个:( – NotDan 2009-11-15 02:42:03

+0

我也是,看起来很奇怪,没有一个很容易实现Googleable的实现,也许你会成为第一个。 – 2009-11-15 02:53:48