您现在的位置是:网站首页> 编程资料编程资料
一个基于canvas的移动端图片编辑器的实现canvas如何实现多张图片编辑的图片编辑器
2021-08-30
1167人已围观
简介 这篇文章主要介绍了一个基于canvas的移动端图片编辑器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
项目地址: https://github.com/xiaosu95/canvas_mobile_drag
该插件是一款脱离jq的移动端图片编辑器。可以应用在移动端H5页面或者微信小程序中。
- 插件实现的功能为可页面内初始化载入图片、手动添加手机相册内的图片、或者添加服务器端的图片(服务器端需要开启允许图片跨域)。拥有多种的编辑模式。支持操作画布内的所有图片和单独设置某一种图片的状态或者位置等。
- 插件操作模式支持手势放大、旋转;支持点击图片的四个角落拖拽放大或旋转或者。
- 支持照片exif自动矫正。许多手机用不同方向拍照时会导致图片在canvas中显示角度不正常。常规解决方法是引入exif.js。不过该js大小太大。所以我在这里直接将exif获取角度的部分提取出来,大大精简了代码量。
- 插件可输出你期望的分辨率图片,格式。
开始使用
var canvasBox = document.querySelector('#picBox'); var canvas = new _Canvas({ box: canvasBox, // 容器 bgColor: '#000', // 背景色 bgPhoto: 'none', // 背景图 photoModel: 'adaption', // 载入图片模式(设置后添加图片时默认为当前设置模式) model: 'Cascade' // 模式Cascade为添加的图片层级右添加顺序决定,autoHierarchy为层级由选中的图片为最高级 })
创建canvas为画布对象,调用初始化函数init(Object)
- dragEvent、zoomEvent、rotateEvent分别是拖拽、缩放、旋转三个事件监听,传递2个参数(picArr, target)picArr为画布内的所有图片对象数组,target为当前操作的图片对象。
- callback为'图片初始化完成的回调。
canvas.init({ dragEvent: function (picArr, target) { // 监听拖拽事件 console.log('当前操作事件:正在拖拽') }, zoomEvent: function (picArr, target) { // 监听缩放事件 console.log('当前操作事件:正在缩放') }, rotateEvent: function (picArr, target) { // 监听旋转事件 console.log('当前操作事件:正在旋转') }, callback: function () { console.log('图片初始化完成...') } });
canvas画布的方法:
toDataURL(Object)
- width: 输出的宽 (必须);
- height: 输出的高 (必须);
- type: 输出图片格式;
- bgColor: 图片背景色(若设置了背景图则背景图的层级比背景色高);
- callback: 回调函数(传入参数为图片的baes64)若没有写callback则toDataURL会return图片的baes64;
$('.outputmodel2').click(function () { canvas.toDataURL({ width: 750, height: 600, type: 'image/png', callback: function (url) { $('.outputPic').attr('src', url); console.log('成功输出1倍png图') } }) })
addPhoto(Object)
- url: 图片url(必须);
- model: 载入图片模式默认为'covered'铺满(为数字时为固定宽度,adaption为自适应显示);
- enable: 是否禁止编辑(Boolean)默认为false;
- callback: 图片加载完的回调,参数为图片的对象;
$('.addEnablePic').click(function () { canvas.addPhoto({ url: './img/pic6.jpg', model: 200, enable: true, callback: function () { console.log('成功添加一张禁止编辑的图片') } }) })
changeBg(Object)
color: 背景色
photo: 背景图(url)//为'none'时移除背景图
$('.bgColor').click(function () { var color = '#' + parseInt(Math.random() * 10) + parseInt(Math.random() * 10) + parseInt(Math.random() * 10) canvas.changeBg({ photo: url, color: color }) })
changeParams(Object)
width: '画布宽度',
height: '画布高度',
model: '画布模式' (模式Cascade为添加的图片层级由添加顺序决定,autoHierarchy为层级由选中的图片为最高级)
getNowPhoto()
return 当前操作的图片对象
clearCanvas()
清空画布
canvas画布的属性:
photos:画布内所有图片对象
Photo对象方法(画布内图片对象)
init()
重置图片大小和位置
getPhotoInfo()
返回图片的位置信息{model、enable、x(相对画布的x)、y(相对画布的y)、rotate、scale、width(画布内图片的宽度)、height(画布内图片的高度)、actualWidth(图片实际宽度)、actualHeight(图片实际高度)}
changeInfo(Object)
- hierarchy: 层级(Number)
- img: 图片URL(String)
- rotate: 旋转角度(Number)
- scale: 放大倍数(Number)
- callback: 修改参数后的回调(Function)
$('.changeUrl').click(function () { var nowPhoto = canvas.getNowPhoto(); if (!nowPhoto) { alert('未选中任何图片'); return; } else { var nowPhotoInfo = nowPhoto.getPhotoInfo(); nowPhoto.changeInfo({ img: './img/pic7.jpg', scale: nowPhotoInfo.scale / 1.1, hierarchy: 1, rotate: nowPhotoInfo.rotate + 90, callback: function () { console.log('成功修改') } }) } })
_delete()
删除该图片
到此这篇关于一个基于canvas的移动端图片编辑器的实现的文章就介绍到这了,更多相关canvas 移动端图片编辑器内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
相关内容
- 详解HTML5布局和HTML5标签
- HTML5实现移动端点击翻牌功能移动端Html5中百度地图的点击事件移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
- html5 拖拽及用 js 实现拖拽功能的示例代码HTML5实现拖拽互动改变元素颜色特效html5拖拽应用记录及注意点基于Html5实现的react拖拽排序组件示例HTML5拖拽功能实现的拼图游戏
- html5小程序飞入购物车(抛物线绘制运动轨迹点)HTML5 本地存储实现购物车功能用CSS样式生成搜索、购物车等图标样式(图标字体库)
- app内嵌H5 webview 本地缓存问题的解决Html5 webview元素定位工具的实现html5调用app分享功能示例(WebViewJavascriptBridge)
- 使用HTML5做的导航条详细步骤html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- 利用Node实现HTML5离线存储的方法H5离线存储Manifest原理及使用HTML5中的网络存储实现方式使用HTML5 IndexDB存储图像和文件的示例HTML5离线应用与客户端存储的实现HTML5 本地存储实现购物车功能在HTML5 localStorage中存储对象的示例代码
- HTML+CSS+JavaScript实现图片3D展览的示例代码利用CSS3制作简单的3d半透明立方体图片展示使用CSS3实现一个3D相册效果实例CSS3制作炫酷带方向感应的鼠标滑过图片3D动画css3实现超立体3D图片侧翻倾斜效果
- HTML5逐步分析实现拖放功能的方法HTML5 拖放(Drag 和 Drop)详解与实例代码HTML5中的拖放实现详解HTML5拖放API实现拖放排序的实例代码HTML5拖放效果的实现代码HTML5 拖放功能实现代码
- 移动端HTML5 input常见问题(小结)详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android