这篇文章我们来讲一下在网站建设中,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实现图片镜像翻转的2种方式相关推荐

  1. 前端实现图片快速反转替换_canvas像素点实现镜像翻转

    最近开发扫地机项目网站,后台实现清扫记录展示,地图和坐标需要转换才能正确显示.机器中的世界是跟我们现实图中相反的,需要Y轴翻转.网上搜罗下,大部分是小平翻转.最后在找到类似的原理的代码(https:/ ...

  2. 前端实现图片快速反转替换_canvas实现图片镜像翻转 (2种方式)

    canvas实现图片的镜像翻转 1. 通过canvas自带的画布方法进行翻转var img = new Image(); //这个就是 img标签的dom对象 img.src = './sy.png' ...

  3. 前端实现图片快速反转替换_在canvas上实现元素图片镜像翻转动画效果的方法

    一.Canvas图片水平镜像翻转效果预览 demo页面中点击图片动画效果可见. 二.Canvas上实现图片镜像翻转的实现 CSS中要想实现元素的翻转效果,比较简单,例如我们希望某一张图片水平镜像翻转, ...

  4. 前端实现图片快速反转替换_HTML5开发之canvas实现元素图片镜像翻转动画效果的方法...

    一.Canvas图片水平镜像翻转效果预览 您可以狠狠的点击这里:canvas图片水平镜像翻转动画demo demo页面中点击图片动画效果可见. 二.Canvas上实现图片镜像翻转的实现 CSS中要想实 ...

  5. java压缩图片内存大小,但不改变分辨率大小,第一种方式

    /** * @Title: compressPicByQuality  * @Description: 压缩图片,通过压缩图片质量,保持原图大小 * @param  quality:0-1 * @re ...

  6. python opencv图片旋转180度_Python opencv图像镜像翻转

    最近在训练CNN网络,需要对数据进行扩充,于是想做一下图像的镜像翻转,主要参考了博客: 不过我发现博主使用的是opencv老版本了,现在大家都是cv2了,因此我对博主的代码进行了必要的修改. 首先,说 ...

  7. mongoose 批量修改字段_WordPress图片路径批量替换方法

    不少数站长在使用WordPress博客或者搬家时,需要把WordPress文章中的图片路径进行替换来解决图片不显示的问题.总结一下WP图片路径批量替换的过程,方便有此类需求的站长们学习. 什么情况下批 ...

  8. WordPress图片路径批量替换方法

    不少数站长在使用WordPress博客或者搬家时,需要把WordPress文章中的图片路径进行替换来解决图片不显示的问题.总结一下WP图片路径批量替换的过程,方便有此类需求的站长们学习. 什么情况下批 ...

  9. 关于mysql存取图片的三种方式(含源码示例)

    最近在做小程序的后台,要求将小程序用户以upload方法上传的图片保存到mysql数据库中. 然后机缘巧合三种方式都试了,所以专门整理出来分享给大家.可能有的地方说的不太对,欢迎大家帮纠正. ==== ...

最新文章

  1. Spark 1.2 Standalone Mode 单机安装
  2. SPSS分析:Bootstrap
  3. 【Uva 10934】Dropping water balloons
  4. k8s dashboard_windows10 部署 docker+k8s 集群
  5. mysql5.7bka_mysql5.7的sql优化
  6. Windows autoKeras的下载与安装连接
  7. atitit 解决教学记忆问题 压缩算法原理  哈夫曼 LZ77 gzip  zlib deflate算法.docx 目录 1. 压缩理论 1 1.1. 柯氏复杂性 1 2. 1 RLE 1
  8. 天然气故障代码大全_网上最全燃气表故障代码大全-【看过的人都会选择收藏】...
  9. 256QAM调制映射表
  10. lisp坐标一键生成_如何利用lisp程序一次性提取CAD中点的坐标(不要点击每个点,太多了麻烦)...
  11. 正则表达式(只能操作字符串类型)
  12. 下一个AI领域的高薪方向:强化学习与智能决策研究班2023年春季招生启事
  13. 身份证照片打印出复印件效果
  14. SQL如何实现Excel自动分列功能?
  15. Unity3D接入Android第三方SDK流程
  16. Cardano(ADA), EOS, RChain(RHOC), Aeternity(AE) 都是极其好的币
  17. 在 1080P 的显示器上,4K 的视频是否看起来比 1080P 的视频更清晰?
  18. 计算机哪个自考学校好,哪个学校的自考计算机专业本科比较好通过?
  19. python字典多重
  20. C语言字符数组的输入输出处理

热门文章

  1. 【CVPR 2021】树状决策知识蒸馏:Tree-like Decision Distillation
  2. 关于 厦门“怪虫” 的一点感概
  3. vscode使用方法
  4. excel文件不能编辑怎么回事?
  5. Python 斐波那契数
  6. 01 什么是数据结构
  7. 给定一个字符类型的数组chas[]
  8. java 5,8,9章复习
  9. Arduino 数码管 硬件 4位数码管 TM1637驱动芯片 库文件 示例
  10. 智慧城市发展指数中国第一,深圳数字化转型全景展示