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

Android Bitmap 保存到 SD 卡:FileOutputStream + compress 完整流程

     編輯:程式設計綜合問答

核心代碼


public boolean saveBitmapToFile(Bitmap bitmap, File file) {
    try (FileOutputStream fos = new FileOutputStream(file)) {
        // PNG 無損,JPEG 品質 90 平衡體積清晰度
        return bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}

調用示例


File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyApp");
if (!dir.exists()) dir.mkdirs();
File file = new File(dir, "image_" + System.currentTimeMillis() + ".png");
if (saveBitmapToFile(bitmap, file)) {
    // 發送媒體掃描廣播,讓相冊應用立即顯示
    MediaScannerConnection.scanFile(context, new String[]{file.getAbsolutePath()}, null, null);
    Toast.makeText(context, "Saved to " + file.getAbsolutePath(), Toast.LENGTH_SHORT).show();
}

關鍵點

  • bitmap.compress(format, quality, stream) 直接編碼寫入流,無需手動轉 byte[]。
  • PNG 適合透明/無損,JPEG 適合照片 (quality 80-95)。
  • Android 10+ (API 29) 分區存儲:優先用 getExternalFilesDir() 或 MediaStore 插入,無需權限即可讀寫應用專屬目錄。
  • 保存後發送 MediaScannerConnection.scanFile 更新媒體庫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved