安卓讀取相簿選取圖片並壓縮
阿新 • • 發佈:2018-11-04
背景:
因需要從相簿中選擇照片後做其他操作,但是照片有可能較大,則需要進行壓縮。但是經過系統相簿選擇的圖片,我們獲取到的是URI,而不是實際檔案路徑。找了很多方法來將URI轉為實際路徑,最後沒有找到完善的方法。其實URI的設計,就不是讓大家將其轉化為實際路徑的,應該直接採用URI完成後續的業務,而不是再轉回實際路徑。
Demo原始碼及apk
https://gitee.com/cxyzy1/compressPictureDemo
選取圖片並壓縮的主要程式碼
/** * 相簿選擇圖片 */ private void selectPicture() { Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, REQUEST_CODE_GALLERY); } /** * 接收#startActivityForResult(Intent, int)呼叫的結果 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == REQUEST_CODE_GALLERY) { Uri pictureUri = data.getData(); try { Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),pictureUri); BitmapUtils.compress(bitmap,1024); displayPicture(bitmap); } catch (IOException e) { e.printStackTrace(); } } } /** * 顯示圖片 * @param imageUri 圖片的uri */ private void displayPicture(Uri imageUri) { picIv.setImageURI(imageUri); } private void displayPicture(Bitmap bitmap) { picIv.setImageBitmap(bitmap); }