繁体   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