canvas指定区域生成图片(canvas实现图片镜像翻转的2种方式)
类别:Web前端 浏览量:851
时间:2021-10-18 11:31:08 canvas指定区域生成图片
canvas实现图片镜像翻转的2种方式1. 通过canvas自带的画布方法进行翻转
var img = new Image(); //这个就是 img标签的dom对象 img.src = './sy.png'; img.onload = function () { //图片加载完成后,执行此方法 ctx.drawImage(img, posx, posy, 210, 80); };
play.addEventListener('click', function () { ctx.clearRect(0, 0, canvas.width, canvas.height);//清除画布 //位移来做镜像翻转 ctx.translate(210+ posx * 2, 0); ctx.scale(-1, 1); //左右镜像翻转 //ctx.translate(0, 160 + posy * 2); //ctx.scale(1, -1); //上下镜像翻转 ctx.drawImage(img, 0, 0, 210, 80); });
2.像素点的镜像翻转方法
//竖向像素反转 function imageDataVRevert(sourceData, newData) { for (var i = 0, h = sourceData.height; i < h; i++) { for (var j = 0, w = sourceData.width; j < w; j++) { newData.data[i * w * 4 + j * 4 + 0] = sourceData.data[(h - i) * w * 4 + j * 4 + 0]; newData.data[i * w * 4 + j * 4 + 1] = sourceData.data[(h - i) * w * 4 + j * 4 + 1]; newData.data[i * w * 4 + j * 4 + 2] = sourceData.data[(h - i) * w * 4 + j * 4 + 2]; newData.data[i * w * 4 + j * 4 + 3] = sourceData.data[(h - i) * w * 4 + j * 4 + 3]; } } return newData; }
//横向像素反转 function imageDataHRevert(sourceData, newData) { for (var i = 0, h = sourceData.height; i < h; i++) { for (j = 0, w = sourceData.width; j < w; j++) { newData.data[i * w * 4 + j * 4 + 0] = sourceData.data[i * w * 4 + (w - j) * 4 + 0]; newData.data[i * w * 4 + j * 4 + 1] = sourceData.data[i * w * 4 + (w - j) * 4 + 1]; newData.data[i * w * 4 + j * 4 + 2] = sourceData.data[i * w * 4 + (w - j) * 4 + 2]; newData.data[i * w * 4 + j * 4 + 3] = sourceData.data[i * w * 4 + (w - j) * 4 + 3]; } } return newData; } `` var img = new Image(); //这个就是 img标签的dom对象 img.src = './sy.png'; img.onload = function () { //图片加载完成后,执行此方法 ctx.drawImage(img, 0, 0, 210, 80); }; //像素点操作 var imgData = ctx.getImageData(0, 0, 210, 80); var newImgData = ctx.getImageData(0, 0, 210, 80); // var newImgData = ctx.getImageData(0, 0, w, h); ctx.putImageData(imageDataVRevert(newImgData, imgData), 0, 0); //上下翻转 // ctx.putImageData(imageDataHRevert(newImgData, imgData), 0, 0);//左右翻转~~~~
到此这篇关于canvas实现图片镜像翻转的2种方式的文章就介绍到这了,更多相关canvas图片镜像翻转内容请搜索开心学习网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持开心学习网!
您可能感兴趣
- canvas俄罗斯方块(JavaScript canvas实现俄罗斯方块游戏)
- 使用canvas画个正方形(canvas绘制树形结构可视图形的实现)
- canvas图片显示报错(html2canvas生成的图片偏移不完整的解决方法)
- canvas 缩放后字发虚(canvas 绘图时位置偏离的问题解决)
- html5 canvas 特效(JavaScript canvas实现流星特效)
- 使用canvas画个正方形(canvas小画板之平滑曲线的实现)
- canvas两种绘图方法(canvas 基础之图像处理的使用)
- html5 canvas touch(html5 canvas手势解锁源码分享)
- canvas绘制动态线条(5分钟实现Canvas鼠标跟随动画背景)
- 微信小程序canvas 动画(微信小程序使用canvas绘制钟表)
- canvas绘制图像文件方法(Canvas多边形绘制的实现方法)
- 使用canvas的好坏(关于canvas绘制模糊问题的解决方法)
- canvas实现字体粒子爆炸特效(javascript canvas实现雨滴效果)
- jscanvas背景色(JavaScript canvas实现代码雨效果)
- html5canvas曲线图例子(html5利用canvas实现颜色容差抠图功能)
- 获取canvas画布内容(清除canvas画布内容点擦除+线擦除)
- 如何看待美国数十万加仑牛奶倒下水道 历史又重演了(如何看待美国数十万加仑牛奶倒下水道)
- 历史惊人的相似,美国80万加仑牛奶倒入下水道,意味着什么(历史惊人的相似)
- 美国数十万加仑牛奶倒进下水道,世界会重演1929年的大萧条吗(美国数十万加仑牛奶倒进下水道)
- 美国数十万加仑牛奶倒入下水道,贫民区食不果腹,历史再次重演(美国数十万加仑牛奶倒入下水道)
- 美国倒掉数十万加仑牛奶 上热搜第一,这一幕似曾相识(美国倒掉数十万加仑牛奶)
- 深度 倒牛奶 这一幕为何又在美国上演(深度倒牛奶)
热门推荐
- 移动web跨端开发领域(Web移动端布局那些事)
- zabbixlinux服务进程(利用zabbix监控ogg进程Linux平台)
- jquery五子棋javascript(原生JavaScript实现简单五子棋游戏)
- sql server中策略管理
- 虚拟主机windows和linux啥区别(Linux虚拟主机的好处有哪些?)
- 云服务器十大特征(云服务器有什么使用特点?)
- html5div例子(html5 外链式实现加减乘除的代码)
- asp.net中Server.MapPath的使用
- pyinstaller如何打包成exe文件(利用pyinstaller打包exe文件的基本教程)
- 云服务器cvm什么意思(什么是云服务器cvm?怎么与普通物理服务器进行)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9