【问题标题】:saving image to internal memory and would appear in the gallery将图像保存到内部存储器并出现在图库中
【发布时间】:2011-09-06 01:28:06
【问题描述】:

我已经搜索了很多与我的问题相关的问题。无论如何,是否可以将图像存储在内部存储器中并且它也应该出现在图库中?

【问题讨论】:

  • 如果您有兴趣将图像保存到 SD 卡中,那么我会给您代码。
  • 谢谢,但我已经设置了一个函数来使用这个将图像保存在 sdcard 中。getExternalStoragePublicDirectory 我想知道我是否可以在内部保存图像,然后图像会出现在画廊中

标签: android


【解决方案1】:

完全有可能,我以前做过。

在将图像保存到内存(或称为应用程序文件夹等)之前,您最好设置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);
    }
});

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

Context的参考

【讨论】:

    【解决方案2】:

    你可以把你的内存当作一个目录,然后在上面写你的文件。示例代码可以在here 找到。从内存中加载图像与从目录中读取二进制图像文件相同。然后,您使用decodeByteArray 将您已阅读的文件转换为位图并显示在您的画廊中。

    这是another example 保存图像并在屏幕上显示(但这个是在 webview 而不是画廊)。

    【讨论】:

    • 感谢您的回复,我正在使用此代码将其保存在内部
    • 感谢您的回复,我能够将图像内部保存在“data/data/com.example/files”目录中。我希望它被扫描,以便它出现在手机图库..我知道内部保存的图像对您的应用程序是私有的。我确实尝试使用“MediaScannerConnection.scanFile”扫描“data/data/com.example/files”目录中的图像。我正在使用没有附加 sdcard 的模拟器,所以我宁愿得到异常或错误,因为手机会在图库中创建一个拇指(我认为需要一个外部存储 - sdcard 来存储它)..
    • 我想在没有安装 sdcard 的情况下为 android 手机内部保存图像,用户会提示保存图像,他们可以在图库中查看图像。我还在徘徊,相机拍摄的照片保存在没有 SD 卡的手机中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多