基于canvas实现图片上传/预览/裁剪的demo

image-show

基于canvas实现图片上传/预览/裁剪的demo

上传图片后台测试时候基于nodejsexpress框架

启动步骤:

安装依赖

npm install 切换到dev目录下

node app.js npm run dev

实现思路:

利用原生的input标签的file类型调用本地图片上传;

监听inputchange事件,能实时知道用户是否选中图片;

新建一个formData对象,以键值对的形式存放file对象,demo中以image作为键名;

新建一个fileReader对象,将读取到的file对象转成base64编码的形式;

监听fileReaderonload事件,同时新建一个image对象,在这个事件的回调函数中,将第四步中的编码后的图片地址作为图片引用路径;

监听创建的imageonload事件,利用canvasdrawImage方法,将图片内容以canvas的形式展示在浏览器上;

裁剪的思路 利用监听鼠标的mousedownmousemovemouseup事件,主要是在鼠标移动的事件中,一边清除画布内容的同时,利用canvasstrokeRect方法模拟做出一个矩形裁剪框,getImageData以及putImageData方法实时同步选中区域的x,y坐标以及选中区域宽高可以实现裁剪选区域与预览区域实时同步;

抬起鼠标完成预览图片绘制;

最终利用原生ajax实现form-data类型的上传;

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。