在 Android 開發中,使用 Intent 傳遞裁剪後的圖片時,若圖片體積超過 1MB 左右,常會導致裁剪頁面卡死或傳遞失敗。這是因為 Android 的 Binder 交易緩衝區大小限制(約 1MB),超大圖片無法直接透過 Intent 在元件間傳遞。
最佳做法是 先壓縮圖片,再進行裁剪。可採用以下步驟:
Bitmap 物件時,使用 BitmapFactory.Options 設定 inSampleSize 進行縮放載入,降低解析度。getCacheDir()),再透過 FileProvider 產生 content:// URI 傳遞給裁剪 Intent,避免直接放入 Bundle。核心原則:不要讓超大 Bitmap 進入 Intent Bundle,改用檔案 URI 傳遞路徑,由接收端自行讀取解碼。