html5 手机端 剪裁,用Canvas实现h5移动端图片裁剪

本文分享如何使用HTML5的FileApi和Canvas实现手机端的图片裁剪功能,适合移动端H5活动页面。通过Vue实现,介绍图片读取、裁剪界面绘制、移动时的绘制处理以及保存图片的步骤。
摘要由CSDN通过智能技术生成

前阵子七夕的时候搞了一个h5活动页,需要做一个本地图片的裁剪上传功能,用于生成一些特定的表白图片。主要是用到了H5的FileApi 和 Canvas。个人感觉图片裁剪功能还是很实用的,故写篇文章分享一下。

(PS:这个demo本来是移动端的,但了为了方便录制效果,所以我用chrome模拟地跑了一下。

还有就是demo是配合Vue实现的,因为我是直接在项目中复制过来改改的,就懒得转换了)

图片读取

要裁剪首先肯定就是读取图片文件。其实也很简单,用一个input指定为file类型就可以了。

//Vue里面的methods

clipImg(event){

this.clip = new Clip('container',this);

this.clip.init(event.target.files[0]);

this.isClip = true;

document.body.addEventListener('touchmove',this.noScoll,false);

},

然后就是处理获得的文件

//这些方法是写在Clip类里面的

handleFiles(file){

let t = this;

let reader = new FileReader();

reader.readAsDataURL(file);

reader.onload = function() {

t.imgUrl = this.result;

t.paintImg(this.result);

}

}

先新建一个FileReader类,然后把读得的文件用readAsDataURL转换为base64编码,再通过paintImg方法进行绘制处理。

需要注意的是文件读取是异步的,所以读取后的操作需要在onload函数中进行。

绘制裁剪界面

初始化

先是初始化一些基本参数

//初始化

init(file){

this.sx = 0; //裁剪框的初始x

this.sy = 0; //裁剪框的初始y

this.sWidth = 233; //裁剪框的宽

this.sHeight = 175; //裁剪框的高

this.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值