首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是bitmap.compress()参数'quality'?

什么是bitmap.compress()参数'quality'?
EN

Stack Overflow用户
提问于 2018-02-23 02:01:01
回答 1查看 15.9K关注 0票数 13

在我的应用程序中,我向服务器发送了一些图像。图片的最大大小是300kb,我会调整文件的大小。

这是我调整大小的代码。

代码语言:javascript
复制
public static void resize_filesize(Context context, Uri uri, int maxSize) {
    int filesize;  
    int compressRate;
    try {

        InputStream inputStream = context.getContentResolver().openInputStream(uri);
        filesize = inputStream.available();
        inputStream.close();

        compressRate = ((100*maxSize) / filesize);

        File storageDir = new File(Environment.getExternalStorageDirectory() + context.getString(R.string.photoPath));
        File image = new File(storageDir,"resize.jpg");

        FileOutputStream outputStream = new FileOutputStream(image);
        Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), uri);
        bitmap.compress(Bitmap.CompressFormat.JPEG, compressRate, outputStream);

        outputStream.close();

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            uri = FileProvider.getUriForFile(context,
                    BuildConfig.APPLICATION_ID + ".provider", image);
        } else {
            uri = Uri.fromFile(image);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

}

我想是这样的。如果原始图像大小是500kb,我需要300kb。比我设置的质量:60,图像将压缩60%,它成为300kb。

但我试过了,这么多的压缩工作。这是我的日志。

代码语言:javascript
复制
original : 831210(811kb)
maxsize : 307200(300kb)
rate :  35
final size : 95053(92kb)

怎么回事?

当然我想调整大小,但是太小了!

我做错什么了?“质量”不是%吗?那么我怎么才能得到“接近”的最大尺寸图像呢?

在android文档中,只需说它表示压缩大小...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-23 02:30:09

我想是这样的。如果原始图像大小是500kb,我需要300kb。比我设置的质量:60,图像将压缩60%,它成为300kb。

不是的。

在安卓文件中,只要说它的意思是压缩大小...

不是的。对于compress()quality参数,The documentation具有以下内容

提示空压机,0-100。0表示压缩为小尺寸,100表示压缩为最大质量。某些格式,如无损的PNG格式,将忽略质量设置。

如果对PNG执行compress()操作,则忽略质量值。如果您compress()到JPEG,那么它被用来控制JPEG compression,它通常使用0-100范围来表示所需的质量。但是,这并不意味着值为0会给出不占用空间的照片。

那么我怎么才能得到“接近”的最大尺寸图像?

如果不进行压缩,就无法知道JPEG压缩图像的大小。理想情况下,您不必担心将其“接近”某个特定的压缩比。相反,要么让用户选择质量值,要么选择一些质量值并继续。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48934284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档