我想将位图图像存储在内部存储(而不是外部存储)上。我写了这段代码,但似乎有问题。因为当我从DDMS下载图像时,我无法打开它。
public String writeFileToInternalStorage(Context context, Bitmap outputImage) {
String fileName = Long.toString(System.currentTimeMillis()) + ".png";
try {
OutputStreamWriter osw = new OutputStreamWriter(context.openFileOutput(fileName, Context.MODE_PRIVATE));
osw.write(outputImage.toString());
Log.i(TAG, "Image stored at: " + fileName);
} catch (Exception e) {
Log.w(TAG, e.toString());
fileName = null;
}
return fileName;
}
答案 0 :(得分:6)
outputImage.toString()不是图像:)你放在文件上的不是二进制数据,而是一些字符串!
这样做的方法是:
public String writeFileToInternalStorage(Context context, Bitmap outputImage) {
String fileName = Long.toString(System.currentTimeMillis()) + ".png";
final FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
outputImage.compress(CompressFormat.PNG, 90, fos);
}
我直接编码到浏览器中,可能会出现一些语法错误,但代码应该可以正常工作。
答案 1 :(得分:0)
问题是您使用.toString()而不是将Bitmap压缩为FileOutputStream:
FileOutputStream out = new FileOutputStream(filename);
outputImage.compress(Bitmap.CompressFormat.PNG, 90, out);
也可以通过Context检索内部存储。
File cacheDir = context.getCacheDir();