我们有一个需要加载大量.png文件的Silverlight应用程序。我们可以加载图像OK,但Silverlight不支持从Image类中读取像素数据。
有人能建议一个简单的解决方案来获取这些数据吗?我们目前最好的选择是第三方.png加载库,但我们无法找到合适的库。
答案 0 :(得分:3)
Silverlight中没有基于像素的想象操作/生成的内置类。您需要实现自己的PNG编码器/解码器,它适用于包含图像信息的字节数组。 Joe Stegman已经实现了一个你应该检查的编码器。他在http://blogs.msdn.com/jstegman/获得了Silverlight中关于“可编辑图像”的大量信息。他做了一些事情,比如对图像应用滤镜,生成名人等等。
此博客讨论了一个JPEG Silverilght编码器(FJCore),您可以使用它来调整和重新压缩照片客户端大小:http://fluxcapacity.net/2008/07/14/fjcore-to-the-rescue/
另一个工具是“Fluxify”,它允许您使用Silverilght 2调整大小和上传照片。可以在http://fluxtools.net/
找到所以是的,客户端图像处理绝对可以在Silverilght 2中完成。快乐的黑客攻击!
答案 1 :(得分: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
答案 2 :(得分:0)
谢谢 - 我见过Joe Stegman的博客。它非常方便,但他没有的解码器是PNG。我们正在使用PNG,因为我们需要透明度。 fluxtools链接似乎也被打破了。
我仍在寻找(不成功)PNG解码器,我可以放入Silverlight。
答案 3 :(得分:0)
可以(取决于具体情况)更容易的一个选项是单独保存颜色数据和透明度数据,然后在加载后以编程方式将透明度应用于图像。这样,您可以将图像保存为表示alpha通道的8位gif,再加上jpg或bmp或其他颜色数据。
答案 4 :(得分:0)
Dimebrain - 您提供的msdn链接没有源代码的有效链接 - 您是否有机会链接到有效的源?