2

次のコードを使用するIRandomAccessStreamWithContentTypeと、連絡先の Thumbal を表すを取得できます

var contactPicker = new ContactPicker();
contactPicker.SelectionMode = ContactSelectionMode.Contacts;

var contact = await contactPicker.PickSingleContactAsync();
var thumb = await contact.GetThumbnailAsync();

IRandomAccessStreamWithContentType しかし、画像インスタンスと画像ファイルを取得するための最良の方法は何ですか?

4

1 に答える 1

3

IRandomAccessStream画像を含む通常のものとして処理する必要があります。

using (var stream = await contact.GetThumbnailAsync())
{
    BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
    BitmapFrame frame = await decoder.GetFrameAsync(0);

    var bitmap = new WriteableBitmap((int)frame.PixelWidth, (int)frame.PixelHeight);
    stream.Seek(0);
    await bitmap.SetSourceAsync(stream);
}

ここから、WriteableBitmapをソースとして設定してImage制御したり、他の方法で使用したりできます。

画像サイズを取得するためにストリームが既に読み取られているため、呼び出しが必要です。そのSeekため、画像自体を読み取る前に位置をリセットする必要があります。

于 2013-03-02T06:48:00.067 に答える