1

アバターの画像から円形の領域を切り取ります。画像のピクセル byte[] を取得し、base64 形式でサーバーにアップロードする必要があります。残念ながら、メソッド SaveJpeg() は、選択した円の外側の透明ピクセルをサポートしていません。ImageTools ライブラリを試しましたが、結果のバイト [] から png 画像を作成できない WindowsPhone 以外のプラットフォームはありませんでした。これを行う方法はありますか?

4

2 に答える 2

2

このコードは私のために働いた。試す前に、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();
}

それを見てください!

于 2016-04-28T10:01:52.080 に答える
2

これを行うためのプラットフォーム API はありません。ToolStack PNG ライブラリは、軽量なソリューションを提供します。

http://toolstack.com/libraries/pngwriter

于 2013-04-23T01:05:23.380 に答える