[英]UWP - How to Save a Contact Thumbnail to Local Storage?
我想要一些幫助來獲取聯系人的縮略圖並將其保存到本地存儲,我成功獲取了聯系人縮略圖,但是我無法從流中獲取實際圖像,這是我的代碼:
var contactStore = await ContactManager.RequestStoreAsync();
var contacts = await contactStore.FindContactsAsync();
var myContact = contacts[0]; //I am sure that this Contact has a Thumbnail
var stream = await myContact.Thumbnail.OpenReadAsync();
byte[] buffer = new byte[stream.Size];
var readBuffer = await stream.ReadAsync(buffer.AsBuffer(), (uint)buffer.Length, InputStreamOptions.None);
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("image.jpg", CreationCollisionOption.ReplaceExisting);
var fileStream = await file.OpenStreamForWriteAsync();
await fileStream.WriteAsync(readBuffer.ToArray(), 0, (int)readBuffer.Length);
此代碼在本地存儲中創建一個空圖像,有幫助嗎?
謝謝你的時間
我相信您可能需要在讀取流之后調用stream.Dispose()或使用using指令初始化流: using (var outputStream = stream.GetOutputStreamAt(0))
以下鏈接可能有用: https : //msdn.microsoft.com/zh-cn/windows/uwp/files/quickstart-reading-and-writing-files?f=255&MSPPError=-2147217396
這里的問題是您錯過了將緩沖區刷新到基礎流的Stream.Flush
方法 。 您可以添加fileStream.Flush();
在fileStream.WriteAsync
方法之后可以解決您的問題。
除此之外,我們還需要調用Stream.Dispose方法以在完成使用Stream時釋放Stream使用的資源。 並且此方法通過將任何更改寫入后備存儲並關閉流以釋放資源來處理流。 因此,我們可以在fileStream.WriteAsync
方法之后使用fileStream.Dispose()
。
調用Dispose
方法的推薦方法是使用C# using語句,如下所示:
var contactStore = await ContactManager.RequestStoreAsync();
var contacts = await contactStore.FindContactsAsync();
var myContact = contacts[0]; //I am sure that this Contact has a Thumbnail
using (var stream = await myContact.Thumbnail.OpenReadAsync())
{
byte[] buffer = new byte[stream.Size];
var readBuffer = await stream.ReadAsync(buffer.AsBuffer(), (uint)buffer.Length, InputStreamOptions.None);
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("image.jpg", CreationCollisionOption.ReplaceExisting);
using (var fileStream = await file.OpenStreamForWriteAsync())
{
await fileStream.WriteAsync(readBuffer.ToArray(), 0, (int)readBuffer.Length);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.