几个月前我们往我们的App中引入个人简介功能后,Helen——我们其中一个特性团队的工程师——接到了对个人简介进行第二次迭代的任务。这次版本迭代包括了众多的改进,其中包括支持自定义个人头像功能,头像可以用相机直接拍摄,也可以从Gallery或者Photos这类相册App中选择。
Lyft的Android版本自定义头像的早期设计
在图片被上传到服务器之前,图片必须被裁剪以符合一定的要求,这其中包括:
因为在Lyft我们都喜欢开源,所以自然而然的想到了搜索现成的解决方案。但是没有一个能满足我们的需求,所以我们决定自己动手实现这个需求。一晃几个月过去了,我们现在打算将这个库(Scissors)的核心代码开源。
Scissors提供了一个叫做CropView的控件,它继承于ImageView并且提供了熟悉的方式来提供用于裁剪的图像,比如使用setImageBitmap来设置要裁剪的图像。一旦用户设置好了要裁剪的位置和缩放比例(这受限于cropviewMaxScale和cropviewMinScale)只需调用
Bitmap croppedBitmap = cropView.crop();
该方法返回的Bitmap符合视图的尺寸,这个尺寸可以通过cropviewViewportHeightRatio来进行控制。
我们也提供了一些实用的扩展来进行一些常见的任务,比如:
cropView.extensions()
.load(galleryUri);
你也可以用你喜欢的方式创建自定义的BitmapLoader来提供Bitmap
*在不阻塞主线程的前提下保存裁剪好的Bitmap到文件或者流中
cropView.extensions()
.crop()
.quality(87)
.format(PNG)
.into(croppedFile);
你也可以指定裁剪后输出到文件或者流中的图片格式和质量
我们想让Scissors越来越好用,所以以后Scissors将会支持双击拖动与缩放,同时也会修复一些bug和进行一些优化。我们希望Scissors对你来说是有用的并且能够满足你所有关于图片裁剪的需求。
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8