Java 使用MediaStore.Images.media存储图像以保存在特定文件夹中
我必须在特定文件夹中保存位图。如果没有创建文件夹,我想创建它 我知道你可以保存这样的图像:Java 使用MediaStore.Images.media存储图像以保存在特定文件夹中,java,android,mediastore,Java,Android,Mediastore,我必须在特定文件夹中保存位图。如果没有创建文件夹,我想创建它 我知道你可以保存这样的图像: MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, bitmap + ".jpg Card Image", bitmap + ".jpg Card Image"); 但如何将其保存在特定位置,如“MediaStore/folder”(实
MediaStore.Images.Media.insertImage(getContentResolver(), bitmap,
bitmap + ".jpg Card Image", bitmap + ".jpg Card Image");
但如何将其保存在特定位置,如“MediaStore/folder”(实际上不知道路径应该如何),其中folder是我要创建的文件夹(如果未创建)
我尝试了很多事情,但都没有成功,所以如果有人能帮助我,我会非常感激的 如果您不想使用MediaStore,可以像这样使用内部存储
void saveBitmap(Bitmap bitmap) {
File dir = getFilesDir(); // or getCacheDir()
if (!new File(dir + "/folderName").isDirectory()) {
if (new File(dir + "/folderName").mkdir()) { // directory made successfully
dir = new File(dir + "/folderName/" + "fileName.ext");
} else { // error making the directory
return;
}
} else {
dir = new File(dir + "/folderName/" + "fileName.ext");
}
try {
FileOutputStream fileOutputStream = new FileOutputStream(dir);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
检索位图的步骤
Bitmap loadBitmap(File dir) {
Bitmap bitmap = null;
try {
FileInputStream fileInputStream = new FileInputStream(dir);
bitmap = BitmapFactory.decodeStream(fileInputStream);
fileInputStream.close();
} catch(Exception e) {
e.printStackTrace();
}
return bitmap;
}
该文件夹存储在哪里?在应用程序的数据目录中。这意味着卸载应用程序时文件夹将被删除。我可以将数据放在用户可以访问它的位置吗?如果卸载应用程序,文件夹不会被删除吗?不使用此方法,则不会。卸载应用程序时,数据将被擦除,作为GetFileDir()和getCacheDir()返回的目录特定于该应用程序。