将jpg转换为png并分配给图像控件

时间:2013-11-25 17:58:57

标签: c# .net oop windows-phone-7 windows-phone-8

我在页面之间传递图像。但在第二页,我想将具有透明背景的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'

2 个答案:

答案 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库。