我在页面之间传递图像。但在第二页,我想将具有透明背景的jpg图像转换为png。 最后我想将转换后的图像分配给Image控件,但是我有隐式转换类型的错误。
这是我的代码:
第一页:
WriteableBitmap wb = new WriteableBitmap(logoQrCodeImage, null);
Byte[] array = ConvertImage.ConvertToBytes(wb);
if (!IsolatedStorageSettings.ApplicationSettings.Contains("State"))
{
IsolatedStorageSettings.ApplicationSettings["State"] = array;
IsolatedStorageSettings.ApplicationSettings.Save();
}
第二页:
Byte[] array = IsolatedStorageSettings.ApplicationSettings["State"] as Byte[];
MemoryStream stream = new MemoryStream(array);
WriteableBitmap wb = new WriteableBitmap(50, 50);
//wb.LoadJpeg(stream);
var encoder = new PngEncoder();
MemoryStream pngStream = new MemoryStream();
ExtendedImage myImage;
myImage = wb.ToImage();
encoder.Encode(myImage, stream);
icon.Source = myImage; //ERROR
IsolatedStorageSettings.ApplicationSettings.Remove("State");
IsolatedStorageSettings.ApplicationSettings.Save();
我正在使用ImageTools库。
错误讯息:
错误1无法将类型'ImageTools.ExtendedImage'隐式转换为'System.Windows.Media.ImageSource'
答案 0 :(得分:1)
如果要将其分配给图像控件,则需要转换ExtendedImage
:
icon.Source = myImage.ToBitmap();
答案 1 :(得分:0)
您可以使用WriteableBitmapEx库来创建WriteableBitmap。
WriteableBitmap wb = new WriteableBitmap(50, 50);
wb.FromByteArray(array);
icon.Source = wb;
您可以从nuget获取WriteableBitmapEx库。