4

我通过以下方式将应用程序的屏幕截图保存到图库 -

//screenshot
private void screenshot()
{
    Uri photo = lomography();
    String photopath = photo.getPath();
    try {
        MediaStore.Images.Media.insertImage(getContentResolver(), photopath, "name" , "desc");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

存储在光路中的图像质量很高:

在此处输入图像描述

但是当我导航到图库并打开同一张照片时,这是带有几个压缩伪影的低 JPEG 版本:

在此处输入图像描述

当原始文件是 PNG 时,为什么画廊图像是 JPEG 版本?如何将高分辨率版本保存到图库?

在这里读到,诀窍在于“使用 ContentResolver::insert 注册图像”。

但我正在使用 getContentResolver。

4

2 回答 2

1

要解决此问题,请打开“MediaStore.Images.Media.insertImage”方法的声明,将所需的代码复制并粘贴到您自己的类中,然后将图像压缩为 50% 的位置将其更改为 100%。

于 2015-06-04T03:28:50.177 回答
-3

这就是答案。我的意思是“ this ”是代码中缺失的部分。

而不是'MediaStore.Images.Media.insertImage(getContentResolver()'。我应该使用MediaStore.Images.Media.insertImage(this.getContentResolver()

问题解决了。

于 2013-07-23T06:48:55.117 回答