首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 裁剪圖片過大導致 Intent 傳遞失敗怎麼辦?

     編輯:程式設計綜合問答

在 Android 開發中,使用 Intent 傳遞裁剪後的圖片時,若圖片體積超過 1MB 左右,常會導致裁剪頁面卡死或傳遞失敗。這是因為 Android 的 Binder 交易緩衝區大小限制(約 1MB),超大圖片無法直接透過 Intent 在元件間傳遞。

解決思路

最佳做法是 先壓縮圖片,再進行裁剪。可採用以下步驟:

  1. 取得原始圖片的 Bitmap 物件時,使用 BitmapFactory.Options 設定 inSampleSize 進行縮放載入,降低解析度。
  2. 或在裁剪前,將圖片寫入暫存檔(如 getCacheDir()),再透過 FileProvider 產生 content:// URI 傳遞給裁剪 Intent,避免直接放入 Bundle。
  3. 裁剪完成後,若仍需上傳,建議再次壓縮(如 JPEG 品質 80%)並轉為 Base64 或分塊上傳。

核心原則:不要讓超大 Bitmap 進入 Intent Bundle,改用檔案 URI 傳遞路徑,由接收端自行讀取解碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved