android图片压缩不失真实战

      相信大家在项目开发中,不管是大小企业,服务器上传速度都是有限的,更何况不少公司是通过存在第三方的云存储如七牛中间站的,这就造成假设我们需要上传多张图片会很慢,给用户很差的体验了,这里是个人在项目中需求需要上传三十张照片,对图片压缩的心得,可能存在不足的地方,希望能指正。

废话客套话就不多说了,我们搬砖装修吧,核心实现代码如下:

// 根据路径获得图片并压缩,返回bitmap用于显示

public static Bitmap getSmallBitmap(String filePath) {
   
   
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(filePath, options);

        // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, 480, 800);

        // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;

    return BitmapFactory.decodeFile(filePath, options);
    }
//把bitmap转换成String
public static String bitmapToString(String filePath) {
   
   

        Bitmap bm = getSmallBitmap(filePath);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bm.compress(Bitmap.CompressFormat.JPEG, 40, baos);
        byte[] b = baos.toByteArray();
        return Base64.encodeToString(b, Base64.DEFAULT);
    }
另外在我们存储图片还可以使用Base64转化为字节流保存文件,文件传输入,为了传输方便最好的办法是将文件转化成base64字串,再将base64字串转成字节流保存在文件了。不过这种做法虽然简单,但还要根据实际需求进行选择,弊端是不能转太大的文件,文件太大会造成效率问题,现在暂且这么处理。
具体代码如下:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值