偶然看到一篇博客上说Silicompressor这个图片视频压缩开源库很强大,正好想要研究研究图片视频压缩,就读一读源码。
首先来看用法:
String filePath = SiliCompressor.with(Context).compress(imageUriString, destinationFile);
熟悉的链式语法,参数传入原图片uriString和压缩后图片存放的文件夹,返回压缩后图片绝对路径。
核心类就是SiliCompressor了。
with返回一个SiliCompressor实例,这里是一个二次判空实现的单例模式,实例化由静态内部类Builder完成(Builder模式,这里直接调用了构造器,实例化过程并不复杂,用builder有点多余),传入的context调用getApplicationContext作为依赖的context。和一些主流框架,如picasso的设计完全一样。
来看看和图片压缩有关的有哪些方法:
1.String compress(String uriString,File destFolder);
2.String compressImage(String uriString,File destFolder);
3.String compress(String uriString,File destFolder,boolean deleteSource);
4.String compress(int drawableId);
5.Bitmap getCompressImage(String imageUri);
6.Bitmap getCompressImage(String imageUri,boolean deleteSource);
compress(String uriString,File destFolder)直接调用compressImage。compress(String uriString,File destFolder,boolean deleteSource)第三个参数表示是否删除原图片,也就是在调用compressImage后判断是否删除原图片。
compress(int drawableId)新建一个File将bitmap写入file然后调用compressImage,目标文件夹固定为“/SiliCompressor/images”:
String compressImagePath = compressImage(copyImageUri.toString(),new File(Environment.getExternalStorageDirectory(), "Silicompressor/images"));
然后是getCompressBitmap,还是调用compressImage,只不过转为bitmap返回:
public Bitma