アバターの画像から円形の領域を切り取ります。画像のピクセル byte[] を取得し、base64 形式でサーバーにアップロードする必要があります。残念ながら、メソッド SaveJpeg() は、選択した円の外側の透明ピクセルをサポートしていません。ImageTools ライブラリを試しましたが、結果のバイト [] から png 画像を作成できない WindowsPhone 以外のプラットフォームはありませんでした。これを行う方法はありますか?
1763 次
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 ライブラリは、軽量なソリューションを提供します。
于 2013-04-23T01:05:23.380 に答える