Android常见的图片压缩方法:质量压缩,尺寸压缩和采样率压缩

这里记录下Android三种常见的图片压缩方法:质量压缩,尺寸压缩和采样率压缩

质量压缩

采用系统自带的质量压缩算法,将图片压缩成JPEG格式

public static Bitmap compressQuality(Bitmap bitmap, int quality) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos);
    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
      return BitmapFactory.decodeStream(bais, null, null);//把ByteArrayInputStream数据生成图片
}

尺寸压缩

根据图片的缩放比例进行等比大小的缩小尺寸

public static Bitmap compressSize(Bitmap bitmap) {
    int ratio = 8;//尺寸压缩比例
    Bitmap result = Bitmap.createBitmap(bitmap.getWidth() / ratio, bitmap.getHeight() / ratio, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(result);
    Rect rect = new Rect(0, 0, bitmap.getWidth() / ratio, bitmap.getHeight() / ratio);
    canvas.drawBitmap(bitmap, null, rect, null);

    return compressQuality(result, 100);
}

最后调用了质量压缩的方法compressQuality

采样率压缩

根据图片的采样率大小进行压缩

public static Bitmap compressSample(String filePath) {
    int inSampleSize = 8;//采样率设置
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = false;
    options.inSampleSize = inSampleSize;
    Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);

    return compressQuality(bitmap, 100);
}

最后调用了质量压缩的方法compressQuality

版权声明:著作权归作者所有。

相关推荐

Android无损压缩图片方法

这是把图片以无损的方式压缩。public String compressImage(String imageUri) { String filePath = getRealPathFromURI(imageUri); Bitmap scaledBitmap = null; BitmapFactory.Options options =

Android使用Fresco加载图片的用法

在Android的App开发中,延时加载图片是硬需求。有好几个开源的项目也提供了延时加载图片的功能,常用的有:Fresco,Glide和Universal Image Loader。这里主要简单介绍下Fresco。添加依赖在build.gradle添加依赖如下:dependencies {   ...    compi

nginx配置gzip压缩

配置在nginx.conf的http节点,添加gzip配置如下:http {   gzip on;   gzip_min_length 1k;   gzip_buffers 4 16k;   gzip_comp_level 2;   gzip_types text/plain text/c

Nginx gzip对javascript文件压缩无效

问题Nginx从1.0.15升级到1.12.1后,原来开启的gzip对javascript文件压缩失效了。原来nginx的gzip相关配置如下gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 2; gzip_types text/plain applicati