Universal App圖片檔案和圖片byte[]資訊轉換為bitmap

來源:互聯網
上載者:User

標籤:

1. 開啟圖片檔案並轉換為BitmapImage類

 首先要做的自然是開啟一個圖片檔案了,可以使用FileOpenPicker來手動選擇圖片,總之能拿到一個StorageFile都行。

//開啟圖片選取器,選擇要發送的圖片var openPicker = new FileOpenPicker{  ViewMode = PickerViewMode.Thumbnail,   SuggestedStartLocation = PickerLocationId.PicturesLibrary};openPicker.FileTypeFilter.Add(".jpg");openPicker.FileTypeFilter.Add(".jpeg");var file = await openPicker.PickSingleFileAsync();

也可以使用StorageFile.GetFileFromApplicationUriAsync擷取,下面代碼得到的檔案是應用隔離儲存區 (Isolated Storage)檔案夾LocalState裡的1.jpg檔案。

var path = "ms-appdata:///local/1.jpg";var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(path));

接下來將檔案開啟,並把檔案流寫入到BitmapImage中。

//將圖片檔案讀取為BitmapImagevar fileStream = await file.OpenReadAsync();var bitmap = new BitmapImage();await bitmap.SetSourceAsync(fileStream);

 

2. 將圖片byte[]資訊轉換為bitmap

首先要把byte[]轉換為IRandomAccessStream然後再使用BitmapImage.SetSourceAsync方法將流寫入bitmap中,單純的MemoryStream是不能直接寫入到bitmap中的。

public async static Task<BitmapImage> ConvertBytesToBitmapImage(byte[] bytes){        try            {                if (bytes == null || bytes.Length == 0) return null;                var stream = new MemoryStream(bytes);                var randomAccessStream = new InMemoryRandomAccessStream();                using (var outputStream = randomAccessStream.GetOutputStreamAt(0))                {                    var dw = new DataWriter(outputStream);                    var task = new Task(() => dw.WriteBytes(stream.ToArray()));                    task.Start();                    await task;                    await dw.StoreAsync();                    await outputStream.FlushAsync();                    var bitmapImage = new BitmapImage();                    await bitmapImage.SetSourceAsync(iRandomAccessStream);                    return bitmapImage;                }            }            catch (Exception exception)            {                Debug.WriteLine("[Error] Convert bytes to BitmapImage failed,exception:{0}", exception);                return null;            }}                

 

Universal App圖片檔案和圖片byte[]資訊轉換為bitmap

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.