java—使用mediastore.images.media将图像存储在特定文件夹中

e5nszbig  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(269)

我必须在特定文件夹中保存位图。如果文件夹没有创建,我想创建它。
我知道你可以保存这样的图像:

MediaStore.Images.Media.insertImage(getContentResolver(), bitmap,       
                 bitmap + ".jpg Card Image", bitmap + ".jpg Card Image");

但是我如何将它保存在一个特定的位置,比如“mediastore/folder”(实际上不知道路径应该是什么),其中folder是我想要创建的文件夹(如果没有创建的话)。
我试过很多东西,但都不管用,所以如果有人能帮我,我会非常感激的!

ztigrdn8

ztigrdn81#

如果你不想使用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;
}

相关问题