我们有一个 Silverlight 应用程序,它需要加载许多 .png 文件。我们可以正常加载图像,但是 Silverlight 不支持从 Image 类中读取像素数据。
任何人都可以提出一个简单的解决方案来获取这些数据吗?我们目前最好的选择是第三方 .png 加载库,但我们很难找到合适的库。
我们有一个 Silverlight 应用程序,它需要加载许多 .png 文件。我们可以正常加载图像,但是 Silverlight 不支持从 Image 类中读取像素数据。
任何人都可以提出一个简单的解决方案来获取这些数据吗?我们目前最好的选择是第三方 .png 加载库,但我们很难找到合适的库。
在 Silverlight 中没有用于进行基于像素的图像操作/生成的内置类。您需要实现自己的 PNG 编码器/解码器,该编码器/解码器适用于包含图像信息的字节数组。Joe Stegman 已经实现了一个这样的编码器,你应该看看。他在http://blogs.msdn.com/jstegman/上获得了有关 Silverlight 中“可编辑图像”的大量重要信息。他做了一些事情,比如对图像应用过滤器、生成 mandlebrots 等等。
此博客讨论了一个 JPEG Silverilght 编码器 (FJCore),您可以使用它来调整和重新压缩照片客户端大小: http: //fluxcapacity.net/2008/07/14/fjcore-to-the-rescue/
另一个工具是“Fluxify”,它允许您使用 Silverilght 2 调整和上传照片的大小。可以在http://fluxtools.net/找到
所以是的,客户端图像处理绝对可以在 Silverilght 2 中完成。快乐的黑客!
PNG解码很难找到。
我为 MSDN 写了一篇文章,其中包含一些我从 Joe Stegman、FluxCapacity 和其他一些人那里拼凑起来的开源代码。它包括 PNG 解码(以及 GIF、JPG 和 BMP),供该线程中正在寻找的人使用。
http://www.microsoft.com/youshapeit/msdn/ExpertKnowledge/2008-10/InnovateWithSilverlight2.aspx
如果您不关心我对 Silverlight 的实现,那么您可以直接查看我为 PNG 解码所做的修改:http: //sourceforge.net/projects/pr2/
干杯!
更新:看起来他们不再在网站上提供源代码,所以我在这里重新发布了内容:http: //dimebrain.com/2009/01/innovate-with-silverlight-2-article-code-available .html
谢谢 - 我看过 Joe Stegman 的博客。很方便,但是他没有的解码器是PNG的。我们正在使用 PNG,因为我们需要透明度。Fluxtools 链接似乎也被破坏了。
我仍在寻找(未成功)可以放入 Silverlight 的 PNG 解码器。
一种可能(根据情况)更容易的选项是分别保存颜色数据和透明度数据,然后在加载图像后以编程方式将透明度应用于图像。这样,您可以将图像保存为代表 alpha 通道的 8 位 gif,以及用于颜色数据的 jpg 或 bmp 或其他任何内容。
Dimebrain - 你提供的那个 msdn 链接没有指向源代码的有效链接——你有没有可能链接到有效的源代码?