Skip to content

Commit 3d19a04

Browse files
committed
Merge pull request hehonghui#479 from Damonzh/master
翻译Scissors
2 parents 12aba79 + 2568319 commit 3d19a04

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
剪刀手:Android平台上的图片裁剪库
2+
---
3+
4+
> * 原文链接 : [Scissors: an image cropping library for Android](https://eng.lyft.com/scissors-an-image-cropping-library-for-android-a56369154a19#.ebe64l3dy)
5+
* 原文作者 : [Evelio Tarazona](https://medium.com/@eveliotc)
6+
* 译文出自 : [开发技术前线 www.devtf.cn。本译文已授权开发者头条(链接:http://toutiao.io/download)享有独家转载权,未经允许,不得转载!](http://www.devtf.cn)
7+
* 译者 : [Damonzh](https://github.com/Damonzh)
8+
* 校对者: [这里校对者的github用户名](github链接)
9+
* 状态 : 未完成 / 校对中 / 完成
10+
11+
12+
几个月前我们往我们的App中[引入个人简介功能](http://blog.lyft.com/posts/profiles)后,Helen——我们其中一个特性团队的工程师——接到了对个人简介进行第二次迭代的任务。这次版本迭代包括了众多的改进,其中包括支持自定义个人头像功能,头像可以用相机直接拍摄,也可以从Gallery或者Photos这类相册App中选择。
13+
14+
![Lyft的Android版本自定义图像的早期设计](https://cdn-images-1.medium.com/max/1600/1*An_iDXn6RtufzwUIdSUc-w.png)
15+
Lyft的Android版本自定义头像的早期设计
16+
17+
在图片被上传到服务器之前,图片必须被裁剪以符合一定的要求,这其中包括:
18+
19+
* 放大到原尺寸的200%
20+
* 移动和截图
21+
* 不管在什么样的屏幕密度上都保持固定的比例
22+
* 基于当前屏幕尺寸进行裁剪
23+
24+
因为在Lyft我们都喜欢开源,所以自然而然的想到了搜索现成的解决方案。但是没有一个能满足我们的需求,所以我们决定自己动手实现这个需求。一晃几个月过去了,我们现在打算将这个库([Scissors](https://github.com/lyft/scissors))的核心代码开源。
25+
26+
## Scissors
27+
![](https://cdn-images-1.medium.com/max/1600/1*o9wj6y7Xt5zn6nHI4p5t7Q.png)
28+
29+
### 这个库能做什么?
30+
[Scissors](https://github.com/lyft/scissors)提供了一个叫做**CropView**的控件,它继承于[ImageView](https://developer.android.com/reference/android/widget/ImageView.html)并且提供了熟悉的方式来提供用于裁剪的图像,比如使用[setImageBitmap](https://developer.android.com/reference/android/widget/ImageView.html#setImageBitmap%28android.graphics.Bitmap%29)来设置要裁剪的图像。一旦用户设置好了要裁剪的位置和缩放比例(这受限于cropviewMaxScale和cropviewMinScale)只需调用
31+
32+
~~~java
33+
Bitmap croppedBitmap = cropView.crop();
34+
~~~
35+
该方法返回的Bitmap符合视图的尺寸,这个尺寸可以通过cropviewViewportHeightRatio来进行控制。
36+
37+
![](https://cdn-images-1.medium.com/max/1600/1*SbhkZppPqhMwj4CdcrFS_w.gif)
38+
39+
### 扩展
40+
我们也提供了一些实用的扩展来进行一些常见的任务,比如:
41+
42+
* 使用[Picasso](https://github.com/square/picasso)或者[Glide](https://github.com/bumptech/glide)往CropView里加载Bitmap并且让图片适应视图的尺寸
43+
44+
~~~java
45+
cropView.extensions()
46+
.load(galleryUri);
47+
~~~
48+
49+
你也可以用你喜欢的方式创建自定义的BitmapLoader来提供Bitmap
50+
51+
*在不阻塞主线程的前提下保存裁剪好的Bitmap到文件或者流中
52+
53+
~~~java
54+
cropView.extensions()
55+
.crop()
56+
.quality(87)
57+
.format(PNG)
58+
.into(croppedFile);
59+
~~~
60+
61+
你也可以指定裁剪后输出到文件或者流中的图片格式和质量
62+
63+
### 未来的计划
64+
我们想让Scissors越来越好用,所以以后Scissors将会支持[双击拖动与缩放](https://github.com/lyft/scissors/issues/1),同时也会[修复一些bug和进行一些优化](https://github.com/lyft/scissors/issues/)。我们希望Scissors对你来说是有用的并且能够满足你所有关于图片裁剪的需求。
65+
66+
[开始使用Scissors吧](https://github.com/lyft/scissors)
67+
68+

0 commit comments

Comments
 (0)