首页 > 作文

一个基于canvas的移动端图片编辑器的实现

更新时间:2023-04-07 15:21:23 阅读: 评论:0

项目地址:

该插件是一款脱离jq的移动端图片编辑器。可以应用在移动端h5页面或者微信小程序中。

插件实现的功能为可页面内初始化载入图片、手动添加手机相册内的图片、或者添加服务器端的图片(服务器端需要开启允许图片跨域)。拥有多种的编辑模式。支持操作画布内的所有图片和单独设置某一种图片的状态或者位置等。插件操作模式支持手势放大、旋转;支持点击图片的四个角落拖拽放大或旋转或者。支持照片exif自动矫正。许多手机用不同方向拍照时会导致图片在canvas中显示角度不正常。常规解决方法是引入exif.js。不过该js大小太大。所以我在这里直接将exif获取角度的部分提取出来,大大精简了代码量。插件可输出你期望的分辨率图片,格式。

开始使用

var canvasbox = document.querylector('#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)默认为fal;callback: 图片加载完的回调,参数为图片的对象;
$('.addenablepic').click(function () {  canvas.a重庆后勤工程学院ddphoto({    url: './img/pic6.jpg',    model: 200,    enable: true,    callback: function () {      console.log('成功添加一张禁止编辑的图片')    }  })})

changebg(object)

color: 背景色

photo: 背景图(url)//为’none’时移除背景图

$('.bgcolor').click(function () {    var color = '#' + parint(math.random() * 10) + parint(math.random() * 10) + par大胆美女艺术int(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;  } el {    var nowphotoinfo = nowphoto.getphotoinfo();    nowphoto.changeinfo({      img: './img/pic7.jpg',      scale: nowphotoinfo.scale / 1.1,      hierarchy: 1,      rotate: nowphotoinfo.rotate + 90,      callback: function () {        con二氧化硫和溴水sole.log('成功修改')      }    })  }})

_delete()

删除该图片

到此这篇关于一个基于canvas的移动端图片编辑器的实现的文章就介绍到这了,更多相关canvas 移动端图片编辑器内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章,希望大家以后多多支持www.887551.com!

本文发布于:2023-04-07 15:21:21,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/368c089e8c98db029ce2ded38f700f05.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:一个基于canvas的移动端图片编辑器的实现.doc

本文 PDF 下载地址:一个基于canvas的移动端图片编辑器的实现.pdf

标签:图片   画布   层级   对象
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图