如何利用HTML5 canvas旋转图片?(实例演示)

如何利用HTML5 canvas旋转图片?(实例演示)

最近突然想研究一下js旋转图片的功能。对于之前的实现方式,就不先说了。现在HTML5很不错,主要了解一下HTML5中的图片旋转吧。

实例演示: http://www.imqing.com/demo/rotateImg.html

原理:利用canvas对象来旋转。

实现方式:首先创建一个canvas元素,然后把img元素绘入canvas。但是,实际上,这是默认情况,就是图片没旋转时。如果图片要旋转90度的话,就需要先把canvas画布旋转90度后再绘图。

描述如下: 

立即学习“前端免费学习笔记(深入)”;

内部旋转原理是这样的,图片的坐标是从左上角开始计算,向右为x正方向,向下为y正方向,在旋转画布canvas时,实际上是这个坐标在旋转,所以最后绘图方式不一样。

当时我还用了picpick来测量旋转一定角度后起点坐标,才知道原来旋转是这样的。

代码:

            
      如何利用HTML5 canvas旋转图片?(实例演示)   function rotateImg(pid, direction) { //最小与最大旋转方向,图片旋转4次后回到原方向 var min_step = 0; var max_step = 3; var img = document.getElementById(pid); if (img == null)return; //img的高度和宽度不能在img元素隐藏后获取,否则会出错 var height = img.height; var width = img.width; var step = img.getAttribute('step'); if (step == null) { step = min_step; } if (direction == 'right') { step++; //旋转到原位置,即超过最大值 step > max_step && (step = min_step); } else { step--; step < min_step && (step = max_step); } img.setAttribute('step', step); var canvas = document.getElementById('pic_' + pid); if (canvas == null) { img.style.display = 'none'; canvas = document.createElement('canvas'); canvas.setAttribute('id', 'pic_' + pid); img.parentNode.appendChild(canvas); } //旋转角度以弧度值为参数 var degree = step * 90 * Math.PI / 180; var ctx = canvas.getContext('2d'); switch (step) { case 0: canvas.width = width; canvas.height = height; ctx.drawImage(img, 0, 0); break; case 1: canvas.width = height; canvas.height = width; ctx.rotate(degree); ctx.drawImage(img, 0, -height); break; case 2: canvas.width = width; canvas.height = height; ctx.rotate(degree); ctx.drawImage(img, -width, -height); break; case 3: canvas.width = height; canvas.height = width; ctx.rotate(degree); ctx.drawImage(img, -width, 0); break; } }   

登录后复制

解释:canvas.width与height就不用解释了吧,应该。rotate应该也不用吧?关键是drawImage(img, x, y);

其中的x,y是指从哪一点开始画,因为整个坐标系统旋转了,所以,x,y不一样,比如step=1,图片向右旋转了90度,即坐标系旋转了90度,那么起始位置应该是x = 0,   y=  img.height

以上就是如何利用HTML5 canvas旋转图片?(实例演示)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2826145.html

(0)
上一篇 2025年3月9日 03:02:51
下一篇 2025年2月23日 04:31:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用canvas压缩图片的具体步骤

    使用canvas压缩图片的步骤: (视频教程推荐:html视频教程) 1、拿到图片元素 2、绘制一个空白的canvas 点击下载“嗨格式压缩大师”; 3、将图片绘制在canvas上 4、将canvas转成base64(这里调用的方法可以实现…

    2025年3月9日
    200
  • html5新增标签有哪些

    html5新增标签有:1、video,表示一段视频并提供播放的用户界面;2、audio,表示音频;3、canvas,表示位图区域;4、source,表示为video和audio提供数据源;5、svg,用于定义矢量图等等。 本文操作环境:Wi…

    2025年3月9日
    200
  • HTML5新增了哪些input类型及其属性?

    新增类型:color、date、datetime、email、month、number、tel、time、url、week等;新增属性:autofocus、form、max、min、pattern、step、list等。 (推荐教程:htm…

    2025年3月9日 编程技术
    200
  • H5+JS实现页面加载动画

    本篇文章给大家介绍一下html5+javascript实现页面加载动画的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 (相关教程推荐:html教程 ) 1.使用定时器,每次都要等待。 2.根据页面加载是否完成,来判…

    2025年3月9日 编程技术
    200
  • html5怎么实现列表

    html5实现列表的方法:1、使用ol标签来创建有序列表,列表中利用li来表示列表项;2、使用ul标签来创建无序列表,列表中利用li来表示列表项;3、使用dl来表示列表项,使用dt来表示定义的内容, 使用dd来对内容进行解释说明。 本教程操…

    2025年3月9日
    200
  • html5怎么设置input只能输入数字

    在html5中,可以通过input标签的type属性来实现只能输入数字的功能,只需要将type属性的值设置为“number”即可,语法“”。 本教程操作环境:windows7系统、HTML5版、Dell G3电脑。 标签规定用户可输入数据的…

    2025年3月9日
    200
  • html和html5有什么区别

    区别:1、HTML的文档类型声明长而复杂,而HTML5的文档声明相对来说更为简便,有利于程序员快速阅读和开发;2、HTML5支持SVG、画布和其他虚拟矢量图形,而HTML不支持;3、HTML本身不支持音频和视频,而HTML5支持等等。 本教…

    2025年3月9日
    200
  • html5如何播放视频

    html5播放视频的方法:1、使用video标签,语法“”;2、使用embed标签,语法“”。 本教程操作环境:windows7系统、HTML5版、Dell G3电脑。 在 HTML 中播放视频的方法有很多种,其中html5有两种方法: 标…

    2025年3月9日
    200
  • html5 input有新属性吗

    html5 input有新增属性,分别为:autocomplete、autofocus、form、height、list、max、min、multiple、pattern、placeholder、required、step、width等等。…

    2025年3月9日
    200
  • 怎样禁止html页面滚动

    在html中,可以通过将body元素的style属性的值设置为“overflow:hidden”来禁止页面滚动,具体语法“..”。 本教程操作环境:windows7系统、HTML5版、Dell G3电脑。 html禁止页面滚动的方法: 1、…

    2025年3月9日 编程技术
    200

发表回复

登录后才能评论