vue下canvas裁剪图片实例讲解


Posted in Javascript onApril 16, 2020

由于时间关系 代码没有做整理大家有什么不懂得可以留言;

代码的主题思路备注中都有 大家可以看看

我的博客中还有关于canvas绘制矩形的文章有需要的可以看一下;

HTML代码:

第一行的canvas为裁剪后展示用;div中的canvas存放原有尺寸的图片

<canvas id="canvasImg1" style=" position: absolute; margin: 2px 0 0 0"></canvas>
<div id="dymImgCanv1" style=" display:none;">
<canvas id="dymCurrImg1" :src="leftImg.carImgUrl" width="1920" height="1080"></canvas>
</div>

JS截取图片方法

1裁剪方法传参

oMark2['canvas1'] = 'canvasImg2'; // 展示结果canvas id
oMark2['canvas2'] = 'dymCurrImg2'; //画布原始图片canvas id
oMark2['ImgUrl'] = carImgUrl;
oMark2['offsetLeft'] = location[0];
oMark2['offsetTop'] = location[2];
oMark2['offsetWidth'] = location[1] - location[0];
oMark2['offsetHeight'] = location[3] - location[2];

2裁剪方法 (注意:下边方法中关于构建的画布 canvas1,canvas3与两个canvas标签ID的命名是不对应的,方便大家理解我把关系捋出来

canvas1 = oMark['canvas2'] = 'dymCurrImg2'

canvas3 = oMark['canvas1'] = 'canvasImg2'

TailoringImg(oMark) {
    // 设置三个canvas 分别为 canvas1 ,canvas2,canvas3
    //  每个canvas的作用 canvas1原始图片画布(页面中隐藏);
    //  canvas2原图和裁剪结果之间转换;
    //  canvas3裁剪之后的结果展示(页面中展示);
    let res2 = oMark['ImgUrl'];
    let that = this;
    return new Promise(function (resolve, reject) {
     //图片剪切处理
     var canvas1 = document.getElementById(oMark['canvas2']);
     var canvas3 = document.getElementById(oMark['canvas1']);
     canvas1.height = 1080;
     canvas1.width = 1920;

     canvas3.height = 198;
     canvas3.width = 400;
     var cxt1 = canvas1.getContext("2d"); // getContext() 方法返回一个用于在画布上绘图的环境
     var img = new Image();
     img.crossOrigin = '';
     img.src = res2;
     var canvas2 = document.createElement("canvas"); // 创建虚拟画布环境
     var cxt2 = canvas2.getContext("2d");

     img.onload = function () {
      // 计算图片缩放比例
      var Rwidth = canvas1.width / img.width;
      var Rheight = canvas1.height / img.height;

      cxt1.drawImage(img, 0, 0, canvas1.width, canvas1.height); // --第一步-- 原图绘制在画布上 drawImage方法在画布上绘制图像、画布或视频。也能够绘制图像的某些部分,以及/或者增加或减少图像的尺寸。



// 计算缩放好后的尺寸
      var srcX = oMark.offsetLeft * Rwidth;
      var srcY = oMark.offsetTop * Rheight;
      var sWidth = oMark.offsetWidth * Rwidth;
      var sHeight = oMark.offsetHeight * Rheight;
      var dataImg = cxt1.getImageData(srcX, srcY, sWidth, sHeight); // --第二步-- getImageData() 复制原图画布上指定矩形的像素数据

      canvas2.width = sWidth;
      canvas2.height = sHeight;
      cxt2.putImageData(dataImg, 0, 0, 0, 0, canvas2.width, canvas2.height); // --第三步-- 通过 putImageData() 将原图图像数据放到canvas2画布中
      var img2 = canvas2.toDataURL("image/png"); // --第四步-- toDataURL()将canvas2画布保存为图像

      var cxt3 = canvas3.getContext("2d"); // getContext() 方法返回一个用于在画布上绘图的环境
      var img3 = new Image(); // 创建图像对象
      img3.crossOrigin = ''; // 图像跨域设置
      img3.src = img2;    // 设置图像地址
      img3.onload = function () { // onload内可以获取图像信息
       cxt3.drawImage(img3, 0, 0, canvas3.width, canvas3.height) // --第五步-- 将canvas2画布生成的图像放在canvas3画布中

      };
      resolve();
     }
    })
   },

到此这篇关于vue下canvas裁剪图片实例讲解的文章就介绍到这了,更多相关vue下canvas裁剪图片内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript学习历程和心得小结
Aug 16 Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
跟我学习javascript的定时器
Nov 19 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
Jun 16 Javascript
详解springmvc 接收json对象的两种方式
Dec 06 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
Jul 17 Javascript
解决React Native端口号修改的方法
Jul 28 Javascript
webpack实现热加载自动刷新的方法
Jul 30 Javascript
微信小程序button组件使用详解
Jan 31 Javascript
浅谈小程序 setData学问多
Feb 20 Javascript
前端vue如何使用高德地图
Nov 05 Javascript
antd table按表格里的日期去排序操作
Nov 17 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
Apr 16 #Javascript
js String.prototype.trim字符去前后空格的扩展
Aug 23 #Javascript
Vue Object 的变化侦测实现代码
Apr 15 #Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
Apr 15 #Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
Apr 15 #Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
Apr 15 #Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
Apr 15 #Javascript
You might like
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
JavaScript 事件记录使用说明
2009/10/20 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
Python常见数字运算操作实例小结
2019/03/22 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
python自定义函数def的应用详解
2020/06/03 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
亮化工程实施方案
2014/03/17 职场文书
高中家长寄语
2014/04/02 职场文书
省文明单位申报材料
2014/05/08 职场文书
大学生暑假实习总结
2015/07/13 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript
 python中的元类metaclass详情
2022/05/30 Python