我正在尝试在内部存储中存储一些我作为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中“不存在”。为什么会这样?
答案 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);
看看它是否为非空。