Android多进程压缩图片库

来源:互联网 发布:口袋助理软件 编辑:程序博客网 时间:2024/06/06 00:33

这两天也是重新找到了工作,总结了一下面试,发现被问到图片压缩的问题还是比较多的。所以我把以前写的一个图片压缩工具拿出来抽取成了一个库,一方面是复习一下这方面的知识,比如说AIDL的使用,图片压缩的多种方法等等,另一方面也希望被有这方面需求的小伙伴采纳或是提出意见和建议。

解释一下为什么要使用多进程压缩图片。由于压缩图片需要加载和操作Bitmap,这需要的内存非常大,有的低配手机就非常容易出现OOM的情况。由于多进程可以扩展应用内存,于是就有了这个方案。这样的话就算压缩进程崩溃也不会影响主进程的运行。在这个库中对压缩进程出现异常情况也进行了处理,如果出现奔溃或者通讯异常都会把压缩任务交还到主进程处理,这样就减少了一些不可预期的问题。

每天都要过得开心 ( ゜- ゜)つロ乾杯 !


Demo

Demo地址 https://github.com/wdzawdh/Compressor

使用方法

使用时把Demo中的compressor库粘贴到自己项目即可,当然可以打成arr或者jar包使用。需要使用的类只有一个ImageCompressor。

1.初始化

ImageCompressor imageCompressor = new ImageCompressor.Builder(context)                .setCompressFormat(CompressConfig.COMPRESS_WEBP)                .setMaxWidth(1028)                .setMaxHeight(1028)                .setMaxSize(700)                .setDestinationDir("压缩图片保存的文件夹(有默认)")                .startCompressProcess()//开启多进程压缩模式                .build();

2.压缩图片

imageCompressor.compress(pickPhotoPath,         new ImageCompressor.CompressImageListener() {            @Override            public void onCompressSuccess(String basePath, String imgPath) {                iv_content.setImageURI(Uri.parse("file://" + imgPath));            }        });

3.关闭进程

解绑压缩图片的服务进程,如果没有开启startCompressProcess则不需要释放。如果不解绑服务进程也不会影响程序运行。

@Overrideprotected void onDestroy() {    super.onDestroy();        //关闭进程(如果没有开启不需要关闭)        mImageCompressor.stopCompressProcess();}
原创粉丝点击