Android BitMap图片压缩

本文介绍了Android中Bitmap图片压缩的五种方法:质量压缩、采样率压缩、缩放法压缩、RGB_565格式压缩和使用createScaleBitmap压缩。通过调整位深、采样率、像素格式和期望尺寸来优化内存占用。同时,文章强调这些方法主要针对内存优化,压缩后的图片在SD卡上的存储大小可能不同。
摘要由CSDN通过智能技术生成

         最近在网上看了一些关于图片压缩的博客,自己也动手实验了一遍,也算事对图片压缩有了一个了解,打算写个博客记录一下。文末附上参考链接。

         Android中涉及到图片的话一般都会用到BitMap类和BitmapFactory类。而本文讲述的图片压缩也都是通过这两个类来实现的。Android中,图片占用内存大小计算公式:图片宽度 * 图片高度 * 图片每一个像素占用的字节数。所以图片占用内存的大小(或者说压缩),就是通过改变这三个值来改变的。

         1、质量压缩

              这种方法,它是通过改变图片的位深和透明度来实现图片压缩的。它不会改变图片的大小,也不会改变图片占用的内存空间。它改变的是图片对应的BitMap对象的length属性值。下面是实现代码:

    private Bitmap compressQuality(Bitmap bitmap){
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG,100,bos);
        byte bytes[] = bos.toByteArray();
        Log.d(TAG, "compressQuality: length = "+bytes.length);

        return BitmapFactory.decodeByteArray(bytes,0,bytes.length);
    }

        上述代码重点是compress方法的使用,下面是它的API的形式。

//按指定的图片格式以及画质,将图片转换为输出流。 
public boolean compress(CompressFormat format, int quality, OutputStream stream)

        这个方法接收一个图片格式参数(format),画质参数(quality)还有一个输出流(stream)。图片格式参数有JPEG、PNG和WEBP,画质参数是[0,100]区间。使用这个方法压缩图片的时候,我们主要是想把图片对应的BitMap对象的length属性变小,以应对一些对图片大小有限制的情况。而这里就需要注意,当图片格式参数为Bitmap.CompressFormat.PNG的时候,是无法改变这个length属性值的,因为PNG格式是无损的。画质参数为100的时候,length属性值也不变,表示不压缩。

         对于上面代码,还可以学习到的知识点是:BitMap转换成字节数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值