Comment puis-je enregistrer une image (BitmapImage/WriteableBitmap) au format png en utilisant Silverlight pour Windows Phone?Comment enregistrer BitmapImage/WriteableBitmap au format png (Silverlight/Windows Phone)?
4
A
Répondre
0
Jetez un coup d'œil à ImageTools sur codeplex. Cela prend en charge l'encodage Silverlight PNG. Je ne suis pas sûr que cela fonctionnera avec ou peut être compilé pour Windows Phone 7.
0
Vous pouvez essayer le code suivant.
Ce code a fonctionné pour moi. Avant d'essayer, assurez-vous que votre writablebitmap a un arrière-plan transparent (vous pouvez vérifier en assignant à une source d'image de contrôleur d'image). Si ce n'est pas le cas, rendre l'arrière-plan transparent à partir du contrôleur d'où il venait.
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();
}