腾讯AlloyTeam移动Web裁剪组件AlloyCrop正式开源

传送门

Github地址:https://github.com/AlloyTeam/AlloyFinger/tree/master/alloy_crop

在线Demo演示:

简介

裁剪图片的应用场景有头像编辑、图像编辑,在移动端要配合手势以及进行触摸反馈来进行变形以确认用户的选区进行裁剪。AlloyCrop就是专注于裁剪图像的组件,目前服务于QQ相关的Web业务,今日正式对外开源。

项目截图

 

 

这里需要注意的是,圆形裁剪出的图片其实是正方形的,这里可以通过CSS3圆角边框自行设置为圆形的图片。

使用姿势

 new AlloyCrop({
        image_src: "img src",
        circle:true, // optional parameters , the default value is false
        width: 200,
        height: 200,
        ok: function (base64, canvas) { },
        cancel: function () { },
        ok_text: "确认", // optional parameters , the default value is ok
        cancel_text: "取消" // optional parameters , the default value is cancel
 });
  • image_src为需要裁剪的图片的地址
  • circle为裁剪组件的样式,为可选参数,默认值是false。需要注意:当设置为true时候,width必须等于height。
  • width为裁剪区域的宽
  • height为裁剪区域的高
  • ok为点击确认按钮的回调函数,并且可以拿到裁剪完成的base64和裁剪所用的canvas
  • cancel为点击取消按钮的回调函数
  • ok_text为确认按钮的文本,可选。默认是 ok
  • cancel_text为取消按钮的文本,可选。默认是 cancel

Q&A

Q: 对比了下微信的头像裁剪,为什么基于Web的AlloyCrop比微信Native还要流畅?为什么?为什么?
A: 基于transformjsAlloyFinger打造的AlloyCrop必须流畅啊!
这里猜测下(因为看不到微信裁剪的源码),微信头像裁剪走的是软绘,transformjs走的是硬绘。

Q: 兼容性如何
A: 支持touchstart、touchmove、touchend、touchcancel以及CSS3 transform的设备的浏览器便可运行AlloyCrop....不一一列举..

Q: transformjs+AlloyFinger+ AlloyCrop 一共不到600行?为什么体积这么小?
A: 腾讯手Q内大量的web都会去不断地从各个维度进行性能优化。框架类库尺寸的大小就是其中很重要的一个维度,小文件明显加载更快,解析也更快,这是很直接的优化手段。100行代码能解决的问题绝对不会用1000行代码去解决。所以Hammerjs被我们抛弃了,各种CSS3的js库也被我们放弃。使用更加精简的、抽象层次更高的 transformjsAlloyFinger。具体为何如此小,可以看看源码。

Q: 腾讯内部有哪些项目在用?
A: 目前AlloyCrop主要是兴趣部落、QQ群等Web业务在用,刚刚开源出来,只要有裁剪图片的地方都会用到。AlloyFinger和transformjs拥有大量的项目在使用,包括公司外部的内部的以及国内的和国外的用户。

你值得拥有

Github地址:https://github.com/AlloyTeam/AlloyFinger/tree/master/alloy_crop

时间: 2024-10-11 12:02:43

腾讯AlloyTeam移动Web裁剪组件AlloyCrop正式开源的相关文章

腾讯万亿级分布式消息中间件TubeMQ正式开源

TubeMQ是腾讯在2013年自研的分布式消息中间件系统,专注服务大数据场景下海量数据的高性能存储和传输,经过近7年上万亿的海量数据沉淀,目前日均接入量超过25万亿条.较之于众多明星的开源MQ组件,TubeMQ在海量实践(稳定性+性能)和低成本方面有着比较好的核心优势. TubeMQ 捐赠 Apache 基金会 9月12日,Apache软件基金会成立20周年之际,腾讯在ApacheCon宣布TubeMQ 开源.TubeMQ 启动计划捐赠 Apache 基金会的流程. TubeMQ系统特点 1.

升讯威ADO.NET增强组件(源码):送给喜欢原生ADO.NET的你

不提码代码,光是写博客就要写一整个晚上,对您有用的话还请赞一个~ 目前我们所接触到的许多项目开发,大多数都应用了 ORM 技术来实现与数据库的交互,ORM 虽然有诸多好处,但是在实际工作中,特别是在大型项目开发中,容易发现 ORM 存在一些缺点,在复杂场景下,反而容易大大增加开发的复杂度及牺牲灵活度.使用 ORM 不写 SQL 而使数据库交互变得简单易行,是否能够达到预期效果,要画一个问号. 主要问题可能存在于以下几点: 1.大幅度牺牲性能. 2.虽然隐藏了数据层面的设计,但并没有从根本上降低数

Microsoft Visual Studio Web 创作组件安装失败的解决方法

在网上查一下说是Office2007的问题.我把Office2007卸载了还是不行. 然后用Windows Install Clean Up工具清理,还是不行. 郁闷了.然后在安装包中的下面路径下找到\WCU\WebDesignerCore找到“Visual Studio Web 创作组件”的安装程序WebDesignerCore.EXE,双击出现提示“提取失败”,看来是安装包的这个组件在从别的地方copy的时候出现问题了.于是让同事给我重新发一个WebDesignerCore.EXE,再双击就

Web打印组件jatoolsPrinter(转载)

应用web化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于web的应用,客户端的规则很简单,容易学习,容易维护,容易发布.但对程序员来说,因为浏览器的局限性,却要面对很多挑战.怎么样来进行基于web的套打,就是这么一个令多数程序员头痛不已的问题. 基于web的套打,难度在于要将浏览器中呈现的html,精确地打印到票据中,而且能够实现对分页位置的控制.下面就ie浏览器所能采用的套打解决方案,来个汇总分析,希望对大家有所帮助. jatoolsPrinter 是一款实现网页套打的免费

老李分享:Web Services 组件 1

老李分享:Web Services 组件 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200. 在过去的几年里,三大主流技术已经成为构成当今 web service 技术的全球标准.接下来我们来讨论一下这些技术. XML-RPC XML-RPC 是在计算机之间交换信息的最简单的基于 XML 的协议. XML-RPC 是一个简单协议,它使用 XM

Web应用组件化的权衡

1. 基本概念 什么是Web应用? 所谓Web应用,指的是那些虽然用Web技术构建,但是展现形式却跟桌面程序或者移动端原生应用类似的产品.这类产品的特点是逻辑较重,交互复杂,通常也是单页式的. 主要包括: 交互占比较高的页面体系 以各种Hybrid技术构建的应用,其中的Web部分 大部分可以等同于所谓的"单页面应用",可以参见之前写的这篇:构建单页Web应用 组件化开发的优势是什么? 组件化的最重要作用就是提升开发和维护的效率. 最原始的组件,其功能可以单独开发测试,然后逐级拼装成更复

web service 组件

web service 组件 基本的 web service 平台是 XML + HTTP.所有标准的 web service 使用以下组件: SOAP(简单对象访问协议) UDDI(通用描述.发现与集成) WSDL(web service 描述语言) 所有这些组件都将会在 web service 章节中进行讨论. 一个 web service 是如何工作的? 一个 web service 通过使用诸如 HTML.XML.WSDL 以及 SOAP 之类的开放标准来保证不同应用之间的通信.一个 w

2015腾讯暑期实习生 Web前端开发 面试经历

[2015腾讯暑期实习生 Web前端开发 面试经历] 好吧,首先声明,我被刷了,应该是跪在二面 微信查到的面试状态一直呈现复试中 .. 整整四天了.. 看来是没希望了 不过也是一次经历,记录一下还是可以的 .. 零.TST内推 TST还是有必要提一下,早早就随大家把简历交上去内推了 很多人都有评级了,各种评级都有 但我 从头到尾都查不到评级..是漏了..还是简历太渣看不上... 还是怎么回事..衰.. 一.笔试 笔试是在3月29号在华工考的,腾讯的笔试一直都那么回事,技术岗的都同样一份试题. 试

web.xml 组件加载顺序

<web-app> <display-name></display-name>WEB应用的名字 <description></description> WEB应用的描述 <context-param></context-param> context-param元素声明应用范围内的初始化参数 <!– 指定spring配置文件位置 –> <context-param> <param-name>