這是個人第一篇博文,請你們多多指教!
大概一個月以前,在跟朋友合做開發一個APP的過程當中,咱們發現到一個問題:圖片的存儲。由於數據庫沒有圖片這種數據類型,當用戶上傳的圖片須要存儲的時候,咱們沒法將其直接放進數據庫中。
在經歷了幾天的探索,結合郭神的《第二行代碼》調用攝像頭拍照以及從相冊中選擇圖片這兩小節,咱們發現了Android裏面的一個圖片類:Bitmap。最終發現,利用Bitmap及其相關的工具類便可實現圖片的存儲以及顯示。 java
主要用到的工具類:android
import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Base64; import java.io.ByteArrayOutputStream; /** * Created by cartoon on 2017/12/9. */ public class StringAndBitmap { //圖片與String之間的轉換,便於將圖片存儲在數據庫中 private Bitmap bitmap; private String string; public Bitmap stringToBitmap(String string){ //數據庫中的String類型轉換成Bitmap if(string!=null){ byte[] bytes= Base64.decode(string,Base64.DEFAULT); bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length); return bitmap; } else { return null; } } public String bitmapToString(Bitmap bitmap){ //用戶在活動中上傳的圖片轉換成String進行存儲 if(bitmap!=null){ ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] bytes = stream.toByteArray();// 轉爲byte數組 string=Base64.encodeToString(bytes,Base64.DEFAULT); return string; } else{ return ""; } } }
下面已經獲取到數據庫中已經存儲了的圖片的String語句string,只須要在須要顯示圖片的組件中調用關於顯示Bitmap的方法便可。數據庫
imageView.setImageBitmap(stringAndBitmap.stringToBitmap(string); //這裏的imageView爲頁面組件綁定的ID,string爲從數據庫獲取到圖片的string形態
而存儲用戶上傳的圖片則須要這樣便可。數組
bitmap=((BitmapDrawable)imageView.getDrawable()).getBitmap(); string=stringAndBitmap.bitmapToString(bitmap);
通過一些數據庫的操做,便可以把用戶上傳的圖片存入到數據庫中。
由於數據庫部分不是我負責的,因此個人建議是數據庫中的類型選擇BLOB(MySQL),由於已經實現過是可行的。
以上就是以前開發的一點小技巧,也是通過痛才領會出來的。咱們尚未測試過資源的消耗以及延時的狀況,但確實是能夠存儲圖片到數據庫中的。
若是大家有任何對這篇博文的建議或者意見的話,歡迎私信或者在下方評論。最重要的是能夠幫助到像咱們同樣的入門者。工具