1. 程式人生 > 實用技巧 >Android客戶端 和 伺服器 的圖片傳輸技術

Android客戶端 和 伺服器 的圖片傳輸技術

Android客戶端 和 伺服器 的圖片傳輸技術

寫在前面

今天我們來看看如何處理Android客戶端到Web API後端的圖片的一些處理方法。

我比較常用的在兩者間處理圖片的幾種方式

  • Android 傳送圖片to Base64圖片資料,Web API端進行資料轉碼成圖片並儲存到本地。
  • Android 傳送圖片to Base64圖片資料,Web API端進行資料轉碼成二進位制形式儲存到資料庫。
  • Web API 直接傳送圖片名稱,Android 客戶端通過網路方式載入圖片(將圖片的URL地址讀取成InputStream再將其轉換為Bitmap
  • Web API 從資料庫中讀取圖片二進位制檔案,並通過Base64
    編碼變成字串資料,從而將其返回到客戶端,客戶端對他進行Base64Bitmap的操作。

以上大概就是我對於服務端和客戶端圖片操作的全部方法了。

因為後服務端轉碼網上一搜一堆,這裡就不詳細說明了。

方法一:Web API 將Base64檔案轉碼成圖片並存儲到本地

  1. 將圖片在Android客戶端將Bitamp轉換為Base64編碼檔案並且通過Post方法進行傳輸,但是需要注意的是 : )。就是每次在Post傳輸檔案時如果是傳輸的資料過大會導致Post請求失敗。

  2. 其次就是對於Web API服務端的操作了。首先,我們在Web API獲取相對應的儲存檔案的資料夾路徑。

    string path = System.Web.Hosting.HostingEnvironment.MapPath($@"/Images/");
    

    如何程式碼就是用於獲取Web API所在伺服器的相對路徑了,並且存放在Images資料夾。

  3. 如何儲存將要儲存檔案的名稱的問題:

    string fileName = Guid.NewGuid().ToString();
    

    這裡我們使用的是Guid的方式去獲取全域性的唯一名稱。

  4. 如何通過流的形式去寫入檔案:

    FileStream fileStream = new FileStream(path + fileName + ".jpg", FileMode.Create, FileAccess.Write);
    

    先是建立一個FileStream並且設定檔案型別為FileModel.Create

    設定操作為FileAccess.Write.

    並且將儲存圖片的Base64檔案轉換為位元組陣列的形式。以及通過FileStream.Write的方式去寫入資料。

這樣,從Android客戶端傳輸到Web API並進行儲存的操作也就完成了。

方法:Android 通過圖片的網路地址進行圖片的讀取

Android如何讀取網路圖片,其實就是通過Get方法去獲取。

Bitmap mBitmap = BitmapFactory.decodeStream(new URL(address).openStream());

這裡的address就是我們的網路圖片的地址。但是他也是通過Get方法去獲取,所以也是需要使用多執行緒來獲取資料。