由于时间关系 代码没有做整理大家有什么不懂得可以留言;
代码的主题思路备注中都有 大家可以看看
我的博客中还有关于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="/UploadFiles/2021-04-02/leftImg.carImgUrl">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(); } }) },
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]