无法将图像存储在内部存储中

时间:2011-08-19 17:13:36

标签: android file storage

我正在尝试在内部存储中存储一些我作为base64编码字符串获取的图像。 由于某种原因,他们似乎没有存储,我不知道为什么。

这是存储它们的功能:

public void createImage(String image, String name){
    try{
        byte[] imageAsBytes = Base64.decode(image.getBytes(), Base64.DEFAULT);
        Bitmap img_bitmap = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length);

        //mCtx is the context. It comes from the main activity
        FileOutputStream fos = mCtx.openFileOutput(name, Context.MODE_WORLD_READABLE);
        img_bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
        fos.flush();
        fos.close();

        //Let's check if they're there
        File f = new File(mCtx.getFilesDir().getPath() + "/" + name + ".png");

        if (f.exists())
             Log.v(DB_TAG, "Exists");
        else
             Log.v(DB_TAG, "Not exists");
    }
    catch(Exception e){
        e.printStackTrace();
        Log.e(DB_TAG, e.toString());
    }
}

我一直在logcat中“不存在”。为什么会这样?

2 个答案:

答案 0 :(得分:0)

File f = new File(mCtx.getFilesDir().getPath() + "/" + name); //<-- removed .png!
if (f.exists())
    Log.v(DB_TAG, "Exists");
else
    Log.v(DB_TAG, "Not exists");

您将文件保存为“名称”,然后将您创建的文件保存为“name.png”。

答案 1 :(得分:0)

BitmapFactory decodeByteArray存在一些已知问题(例如使用PNG - 请参阅https://stackoverflow.com/questions/3956641/png-base64-decoding-problem-in-android)。值得记录使用

从decodeByteArray返回的位图
Log.v(DB_TAG, "Bitmap = " + bitmap);

看看它是否为非空。