• 原文链接 : Scissors: an image cropping library for Android
  • 原文作者 : Evelio Tarazona
  • 译文出自 : 开发技术前线 www.devtf.cn。本译文已授权开发者头条(链接:http://toutiao.io/download)享有独家转载权,未经允许,不得转载!
  • 译者 : Damonzh
  • 校对者: 这里校对者的github用户名
  • 状态 : 未完成 / 校对中 / 完成

几个月前我们往我们的App中引入个人简介功能后,Helen——我们其中一个特性团队的工程师——接到了对个人简介进行第二次迭代的任务。这次版本迭代包括了众多的改进,其中包括支持自定义个人头像功能,头像可以用相机直接拍摄,也可以从Gallery或者Photos这类相册App中选择。

Lyft的Android版本自定义头像的早期设计

在图片被上传到服务器之前,图片必须被裁剪以符合一定的要求,这其中包括:

  • 放大到原尺寸的200%
  • 移动和截图
  • 不管在什么样的屏幕密度上都保持固定的比例
  • 基于当前屏幕尺寸进行裁剪

因为在Lyft我们都喜欢开源,所以自然而然的想到了搜索现成的解决方案。但是没有一个能满足我们的需求,所以我们决定自己动手实现这个需求。一晃几个月过去了,我们现在打算将这个库(Scissors)的核心代码开源。

Scissors

这个库能做什么?

Scissors提供了一个叫做CropView的控件,它继承于ImageView并且提供了熟悉的方式来提供用于裁剪的图像,比如使用setImageBitmap来设置要裁剪的图像。一旦用户设置好了要裁剪的位置和缩放比例(这受限于cropviewMaxScale和cropviewMinScale)只需调用

Bitmap croppedBitmap = cropView.crop();

该方法返回的Bitmap符合视图的尺寸,这个尺寸可以通过cropviewViewportHeightRatio来进行控制。

扩展

我们也提供了一些实用的扩展来进行一些常见的任务,比如:

  • 使用Picasso或者Glide往CropView里加载Bitmap并且让图片适应视图的尺寸

    cropView.extensions()
    .load(galleryUri);

    你也可以用你喜欢的方式创建自定义的BitmapLoader来提供Bitmap

    *在不阻塞主线程的前提下保存裁剪好的Bitmap到文件或者流中

    cropView.extensions()
    .crop()
    .quality(87)
    .format(PNG)
    .into(croppedFile);

    你也可以指定裁剪后输出到文件或者流中的图片格式和质量

未来的计划

我们想让Scissors越来越好用,所以以后Scissors将会支持双击拖动与缩放,同时也会修复一些bug和进行一些优化。我们希望Scissors对你来说是有用的并且能够满足你所有关于图片裁剪的需求。

开始使用Scissors吧

剪刀手:Android平台上的图片裁剪库相关推荐

  1. Android平台下的图片/视频转Ascii码图片/视频 (一)

    前一阵看鸿洋公众号日推,看到一个几年前就感觉有意思的一个技术,那就是图片转Ascii码,记得上大学时玩过windows的图片或视频转ascii码,可惜那个软件不好用,有bug,转视频的时候动不动就卡死 ...

  2. Freeline - Android平台上的秒级编译方案

    Freeline 技术揭秘 Freeline是什么? Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部 ...

  3. 响应式编程之二:RxJava概述:在Android平台上开发详解

    RxJava 到底是什么 RxJava 好在哪 API 介绍和原理简析 1. 概念:扩展的观察者模式 观察者模式 RxJava 的观察者模式 2. 基本实现 1) 创建 Observer 2) 创建 ...

  4. android代码查找图像,Android平台上利用opencv进行图像的边沿检测

    原标题:Android平台上利用opencv进行图像的边沿检测 近开始接触opencv for Android,从网上down了图像的边沿检测的代码. 测试图片: 在Android2.3.1模拟器上跑 ...

  5. android 图片裁剪库,(译)uCrop介绍 —— 我们自己的Android图片裁剪库

    我们在 Yalantis 开发了许多不同的 Android 应用,经验告诉我们,几乎在所有的应用中,都需要图片裁剪的功能.图片裁剪的用途很广,从简单的用户头像调整到图片的比例裁剪.灵活变换等各种复杂的 ...

  6. android 身份认证技术,Android平台上基于人脸识别的身份认证系统的设计与实现

    摘要: 随着移动互联网与人工智能技术的发展,基于个人特征的生物识别技术代替传统的身份验证方式已经是大势所趋.而人脸识别是生物识别技术的一个重要组成部分,拥有其他生物识别技术没有的独特优势.本文主要针对 ...

  7. Android 图片选择器和图片裁剪库

    前言:现在大部分的App都支持上传图片和裁剪图片的功能,比如设置用户头像.聊天发送图片.发表动态.论坛帖子等.上传图片需要先从选择手机中选择要上传的图片,所以图片选择器在App中是很常见的组件,一般的 ...

  8. Android平台上实现身份证识别(通过阿里云Api-印刷文字识别_身份证识别)

    Android平台上实现身份证识别(通过阿里云Api-印刷文字识别_身份证识别) 一: 前言 继上一篇文章有段时间了,上一篇文章的身份证和银行卡的识别时通过本地的opencv库,tess-two库识别 ...

  9. Android平台上实现银行卡识别(通过阿里云Api-印刷文字识别_银行卡识别)

    Android平台上实现银行卡识别(通过阿里云Api-印刷文字识别_银行卡识别) 一: 前言 上一篇文章是通过阿里云Api实现在android中扫描身份证和从相册中选取身份证图片识别身份证信息的功能, ...

最新文章

  1. asp.net中控件id,clientid,uniqueid的区别
  2. centos 6.5配置samba
  3. 费解 | 为什么很多程序员工作时都戴耳机?
  4. ubuntu mysql 中午_Ubuntu更改MySQL字符集UTF-8,正确显示中文
  5. mysql作为kafka生产者_Kafka之生产者
  6. linux的apache2.4限定某个目录禁止解析PHP及user_agent与PHP相关配置
  7. Linux的远程连接及Linux系统下Tomcat部署
  8. 浪潮服务器nf5280m2安装系统,破茧化蝶之作 浪潮NF5280M2服务器评测
  9. 寻找公共链表起始位置
  10. 关于成员变量和局部变量是否都会被默认初始化的问题
  11. 使用SVN管理unityproject
  12. [MLDN魔乐科技]Oracle视频教程
  13. logback springProperty 标签不起作用
  14. 【量化投资】三大经典策略
  15. 近年来计算机的就业情况图表,计算机学院召开2009级学生考研动员大会
  16. MINE:Mutual Information Neural Estimation
  17. 刹车刹不住,太危险?我在绿源杭州电动车店提的新车超稳哒~
  18. Selector空轮询
  19. 微信小游戏实现语音识别(超详细)
  20. 什么是PON(无源光纤网络)、PON的发展及演进

热门文章

  1. jupyter数据处理应用于模型预测
  2. Ce6-DBCO 二氢卟吩-二苯基环辛炔 Ce6-PEG-DBCO
  3. python 实现网站_python 实现网站_用web.py实现python网站版hello world网页
  4. 人物结局 归德侯府_《归德侯府》
  5. 无法启动python原因_Pycharm无法运行Python的一些说明
  6. apriori-课堂笔记
  7. MMEditing如何添加自己的新模型
  8. Andorid实现皮皮蟹App的核心功能-语音播放
  9. [原创]安卓U3D逆向从Assembly-CSharp到il2cpp
  10. 王小云破解了美国密码吗?