簡體   English   中英

Android 將 bitmap 寫入 SD 卡

[英]Android writing bitmap to sdcard

我正在嘗試將 bitmap 寫入 android 上的 SD 卡,我收到錯誤消息
/mnt/sdcard/PhysicsSketchpad/sketchpad145.png (No such file or directory).
我在清單中聲明了android.permission.WRITE_EXTERNAL_STORAGE權限,這是我的代碼:

String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + 
                        "/PhysicsSketchpad/";
File dir = new File(file_path);
dir.mkdirs();
File file = new File(dir, "sketchpad" + pad.t_id + ".png");
FileOutputStream fOut = new FileOutputStream(file);

bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut);
fOut.flush();
fOut.close();

這是怎么回事?

更新

似乎當我嘗試寫入現有目錄時,出現權限被拒絕錯誤,

08-11 09:55:23.796: WARN/Physics Sketchpad(8881): Error when saving: IOException /mnt/sdcard/download/sketchpad54.png (Permission denied)

當我嘗試保存在新目錄中時,我收到沒有此類文件或目錄錯誤,
08-11 09:59:20.175: WARN/Physics Sketchpad(9040): Error when saving: IOException /mnt/sdcard/PhysicsSketchpad/sketchpad55.png (No such file or directory)

此外, File.mkdirs()根據是否成功返回 boolean,返回 false。

試試這個代碼。

  String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + 
                            "/PhysicsSketchpad";
    File dir = new File(file_path);
if(!dir.exists)
    dir.mkdirs();
    File file = new File(dir, "sketchpad" + pad.t_id + ".png");
    FileOutputStream fOut = new FileOutputStream(file);

    bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut);
    fOut.flush();
    fOut.close();

試試這個代碼。 這對我有用。

public void saveBitmap(Bitmap bm)
{
    try
    {
        String mBaseFolderPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera/";
        String mFilePath = mBaseFolderPath + "abcd.jpg";

        FileOutputStream stream = new FileOutputStream(mFilePath);
        bm.compress(CompressFormat.JPEG, 100, stream);
        stream.flush();
        stream.close();
    }
    catch(Exception e)
    {
        Log.e("Could not save", e.toString());
    }
}

沙什

你得到絕對路徑檢查錯誤你得到什么路徑

/mnt/sdcard/AppName/appname145.png

你設置

Environment.getExternalStorageDirectory().getAbsolutePath() + 
                        "/PhysicsSketchpad/";

其中“PhysicsSketchpad”目錄沒有進入上述路徑

嘗試這個

Environment.getExternalStorageDirectory().toString()+ "/PhysicsSketchpad/";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM