Как сохранить BitmapImage/WriteableBitmap в формате png (Silverlight/Windows Phone)?

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


person max    schedule 26.08.2010    source источник


Ответы (2)


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

person AnthonyWJones    schedule 26.08.2010

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

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

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();
}
person gayan1991    schedule 29.04.2016