如何将BitmapImage / WriteableBitmap保存为png格式(Silverlight / Windows Phone)?

4

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

2个回答

0
你可以尝试下面的代码。
这个代码在我的情况下是起作用的。在尝试之前,请确保您的可写位图具有透明背景(您可以通过将其分配给图像控制器图像源来检查)。如果不是,请从其来源控制器使背景透明。
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();
}

0

在codeplex上看一下ImageTools。它支持Silverlight编码PNG。我不确定它是否适用于Windows Phone 7或者能否被编译。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接