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

Android 內部存儲保存 Bitmap:FileOutputStream + compress 而非 toString()

     編輯:程式設計綜合問答

用 outputImage.toString() 寫入文件保存的是對象描述字符串,非圖片二進制數據。正確:Bitmap.compress() 直接輸出到 FileOutputStream。

錯誤代碼

OutputStreamWriter osw = new OutputStreamWriter(context.openFileOutput(fileName, MODE_PRIVATE));
osw.write(outputImage.toString()); // ❌ 寫入文本描述

正確代碼

public String saveBitmapToInternalStorage(Context context, Bitmap bitmap) {
    String fileName = System.currentTimeMillis() + ".png";
    try (FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE)) {
        bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos); // ✅ 直接壓縮寫入流
        fos.flush();
        return fileName;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

關鍵點

  • compress(format, quality, stream) 將編碼後的圖片數據直接寫入輸出流。
  • PNG 無損,質量參數忽略;JPEG 需設置質量 (0-100)。
  • 使用 try-with-resources 自動關閉流(Java 7+)。
  • 內部存儲路徑:/data/data/pkg/files/filename,應用私有,無需權限。

Bitmap.compress 直通流,圖片存儲高效正確。

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