如何以png格式保存BitmapImage/WriteableBitmap(Silverlight/windows phone)?

如何以png格式保存BitmapImage/WriteableBitmap(Silverlight/windows phone)?,silverlight,image,png,save,windows-phone-7,Silverlight,Image,Png,Save,Windows Phone 7,如何使用Silverlight for windows phone以png格式保存图像(BitmapImage/WriteableBitmap)?查看codeplex。它支持silverlight编码PNG。我不确定这是否适用于windows phone 7或是否可以为其编译。您可以尝试以下代码 这个代码对我有用。在尝试之前,请确保可写位图具有透明背景(您可以通过指定给图像控制器图像源进行检查)。如果不是,请使背景从其所在的控制器透明 var localFolder = Windows.Stor

如何使用Silverlight for windows phone以png格式保存图像(BitmapImage/WriteableBitmap)?

查看codeplex。它支持silverlight编码PNG。我不确定这是否适用于windows phone 7或是否可以为其编译。

您可以尝试以下代码

这个代码对我有用。在尝试之前,请确保可写位图具有透明背景(您可以通过指定给图像控制器图像源进行检查)。如果不是,请使背景从其所在的控制器透明

var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
var file = await localFolder.CreateFileAsync("temp.png", CreationCollisionOption.ReplaceExisting);
using (var ras = await file.OpenAsync(FileAccessMode.ReadWrite, StorageOpenOptions.None))
{
     WriteableBitmap bitmap = imageSource;
     var stream = bitmap.PixelBuffer.AsStream();
     byte[] buffer = new byte[stream.Length];
     await stream.ReadAsync(buffer, 0, buffer.Length);
     BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, ras);
     encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96.0, 96.0, buffer);
     await encoder.FlushAsync();
}