将图像保存到内部存储并在图库中显示

3

我搜索了很多与我的问题相关的问题。有没有办法将图像存储在内部存储中,并且它也应该出现在图库中?


如果你有兴趣将图像保存到SD卡中,我可以给你提供相应的代码。 - Dipak Keshariya
谢谢,但我已经设置了一个函数来将图片保存在SD卡中使用这个...getExternalStoragePublicDirectory我想知道是否可以将图像保存在内部,然后该图像会出现在相册中。 - 4ucai
2个回答

2

这是完全可能的,我以前做过。

在将图像保存到内部存储器(或称为应用程序文件夹等)之前,最好设置Context.MODE_WORLDREADABLE。虽然在我的情况下我设置了MODE_PRIVATE并且可以在运行MediaScanner后从相册中读取,但出于安全考虑,我建议您设置MODE_PRIVATE。

在将图像保存到内部存储器后,您可以像这样调用MediaScanner:

// call media scanner to refresh gallery
MediaScannerConnection.scanFile(getApplicationContext(), new String[]{filePath}, null, new MediaScannerConnection.OnScanCompletedListener() {
    @Override
    public void onScanCompleted(String path, Uri uri) {
                    
        Log.i("MediaScanner", "Scanned " + path + ":");
        Log.i("MediaScanner", "-> uri=" + uri);
    }
});

复制/粘贴上面的代码应该可以正常工作。然后您的图像将出现在画廊中。

上下文的参考资料


0

你可以将内部存储器视为一个目录,并在其中写入文件。示例代码可以在这里找到。从内存加载图像与从目录中读取二进制图像文件相同。然后,使用decodeByteArray将已读取的文件转换为位图,并在画廊上显示。

这是另一个保存图像并在屏幕上显示的示例(但这个示例是在Web视图而不是画廊上)。


谢谢您的回复,我正在使用这段代码将其内部保存。 - 4ucai
1
谢谢您的回复,我成功地将图像保存在"data/data/com.example/files"目录中。我希望能够将其扫描,以便出现在手机相册中。我知道内部保存的图像只对您的应用程序私有。我尝试使用"MediaScannerConnection.scanFile"在"data/data/com.example/files"目录中扫描图像。我正在使用一个没有附加SD卡的模拟器,所以我更希望得到异常或错误,因为手机会在相册中创建一个缩略图(我认为这需要外部存储 - SD卡来存储它)。 - 4ucai
我想在没有装载SD卡的Android手机上内部保存图像,用户会被提示保存图像,然后可以在相册中查看图像。我还想知道在没有SD卡的手机上拍摄的照片存储在哪里。 - 4ucai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接