Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MediaStore.Images.Media会降低存储到gallery的图像的质量_Android_Jpeg_Mediastore - Fatal编程技术网

Android MediaStore.Images.Media会降低存储到gallery的图像的质量

Android MediaStore.Images.Media会降低存储到gallery的图像的质量,android,jpeg,mediastore,Android,Jpeg,Mediastore,我正在通过将应用程序的屏幕截图保存到Gallery- //screenshot private void screenshot() { Uri photo = lomography(); String photopath = photo.getPath(); try { MediaStore.Images.Media.insertImage(getContentResolver(), photopath, "name" , "desc"); } c

我正在通过将应用程序的屏幕截图保存到Gallery-

//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();
    }
}
存储在光路上的图像质量高:

但当我导航到Gallery并打开同一张照片时,这是一个低JPEG版本,有几个压缩瑕疵:

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

我发现诀窍在于“用ContentResolver::insert注册图像”

但我使用的是getContentResolver

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

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


问题已解决。

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

两者都是相同的,默认情况下,调用
实例。@xmenW.K。图像质量明显较低,就像vga相机一样。但标记的答案不是解决方案,您调用的是相同的方法,不是吗无论是否使用
这个
。@xmenW.K.添加“this”令人惊讶地解决了这个问题。我猜它与上下文有关。没有这个,它创建了一个缩略图质量的屏幕截图。MediaStore.InsertImageSource显示图像确实被大幅压缩:--50%质量!