我目前正在将现有的C#项目从.Net Framework 4.5移植到可移植类库profile 111。我需要使用PNG格式将图像数据保存到流中或从流中加载图像数据。
您可能知道,System.Drawing
命名空间在此配置文件中不可用,因此我无法像以前那样使用Bitmap
类。到目前为止,我的网络研究并没有产生任何明显的解决方案。用于System.Drawing
不可用时C#中的图像压缩。
在回答这个问题时,请假设我的图书馆提供不同的平台版本,只需要PCL"前端"在这种情况下不是一种选择。
如何处理?
答案 0 :(得分:1)
可移植类库不支持任何设计的图像或UI元素,因此如果不将某些功能提取到最小的平台相关库中,您的问题可能很难解决。从在线进行一些搜索,似乎其他开发者遇到同样的问题已经将图像工作卸载到Web服务或依赖于平台的库。
当然,您可以随时处理byte[]
并滚动您自己的PNG编码器/解码器。好极了。请注意,根据不同的“过滤器”等,可以使用各种口味。
PCL链接here表明可移植类库项目中可用的程序集是:
mscorlib.dll
System.dll
System.Core.dll
System.Xml.dll
System.ComponentModel.Composition.dll
System.Net.dll
System.Runtime.Serialization.dll
System.ServiceModel.dll
System.Xml.Serialization.dll
System.Windows.dll (from Silverlight)
最后一个程序集是我所知道的唯一具有任何图像相关功能的程序集。它包含System.Windows.Controls.Image
类,支持以JPEG或PNG文件格式显示图像。当然,需要注意的是(基于前面提到的链接中包含的矩阵),这个System.Windows.dll
Silverlight程序集仅在定位Silverlight平台和/或Windows Phone 7平台时可用于PCL。它不适用于更通用的.NET Framework 4平台,也不适用于Xbox 360平台。
如果您最终被迫使用最小的平台相关库,则WPF框架确实具有System.Windows.Media.Imaging
命名空间,具有全面的图像格式编码/解码支持(包括PNG格式)。