Как сохранить BitmapImage / WriteableBitmap в формате PNG (Silverlight / Windows Phone)? - PullRequest
4 голосов
/ 27 августа 2010

Как сохранить изображение (BitmapImage / WriteableBitmap) в формате png, используя Silverlight для Windows Phone?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2016

Вы можете попробовать следующий код.

Этот код работал для меня.Прежде чем пытаться, убедитесь, что у вашего writeablebitmap есть прозрачный фон (это можно проверить, назначив источник изображения контроллера изображения).Если нет, сделайте фон прозрачным из контроллера, с которого он исходил.

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 голосов
/ 27 августа 2010

Взгляните на ImageTools на codeplex.Это поддерживает Silverlight кодирование PNG.Я не уверен, будет ли это работать или может быть скомпилировано для Windows Phone 7.

...