windows8開發-圖片雲端儲存與流的轉換

來源:互聯網
上載者:User

關於上傳圖片與下載圖片

目前發現的情況是,圖片是不能用中文名字的(可能與自己使用的編碼方式有關吧,不確定)。如果圖片路徑中包含了中文名,圖片資料貌似可以上傳,但是在下載回來的時候會出現異常,擷取到的資料為空白。

(1)從本地擷取圖片並上傳圖片可以這樣實現:

            FileOpenPicker openPicker = new FileOpenPicker()            {                //添加檔案過濾器                FileTypeFilter = { ".jpg", ".jpeg", ".png", ".bmp" },                //設定呈現視圖模式為縮圖                ViewMode = PickerViewMode.Thumbnail,                //設定檔案選取器開啟時的起始位置,此處設定為圖片庫                SuggestedStartLocation = PickerLocationId.PicturesLibrary            };            //非同步呼叫PickSingleFileAsync            StorageFile file = await openPicker.PickSingleFileAsync();            if (file != null)            {                m_IsResetUserHead = true;                BitmapImage bitmap = new BitmapImage();                bitmap.DecodePixelHeight = 120;                bitmap.DecodePixelWidth = 120;                using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read))                {                       bitmap.SetSource(stream);                    if (m_ImageStream == null)                        m_ImageStream = new MemoryStream();                    m_ImageStream.Position = 0;                    stream.AsStream().Position = 0;                    stream.AsStream().CopyTo(m_ImageStream);                }                // 設定本地頭像                UserHeadImage.Source = bitmap;                // 將頭像上傳到雲端儲存                SaveUserHeadToCloud(m_ImageStream, file.Name, file.FileType);

不過file.name的話最好手動保證為英文字元吧。

其中stream轉換為byte[]的過程如下,用作Http的上傳:

byte[] fileData = new byte[m_ImageStream.Length];m_ImageStream.Read(fileData, 0, fileData.Length);


(2)如果是下載的話,則可以這樣實現:

           try            {                var streamReference = RandomAccessStreamReference.CreateFromUri(new Uri(uri));                IRandomAccessStream stream = await streamReference.OpenReadAsync();                if (stream != null)                {                    BitmapImage image = new BitmapImage();                                       image.DecodePixelHeight = 120;                    image.DecodePixelWidth = 120;                    image.SetSource(stream);                    UserHeadImage.Source = image;                }            }           catch           {               // 當網路連接錯誤時,頭像無法實現更新           }


其中當uri的路徑包含中文時,RandomAccessStreamReference.CreateFromUri會拋出異常。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.