• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 如何利用HTML5 canvas旋转图片?(实例演示)

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

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了HTML5,canvas,旋转图片,实例演示等相关知识,希望对您有所帮助

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


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

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

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

描述如下:

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

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

代码:

<body>    <button onclick="rotateImg('testImg', 'left')">向左旋转</button>      <button onclick="rotateImg('testImg', 'right')">向右旋转</button><br/>      <img src="./test.jpg" id="testImg"/>  <script>    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;         }      }  </script>  </body>

解释:canvas.width与height就不用解释

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • HTML5 canvas如何绘制酷炫能量线条效果(附代码)
  • 使用HTML5开发App有哪些优缺点
  • 带你了解HTML5 SVG,看看怎么绘制自适应的菱形
  • html5以及jQuery实现本地图片上传前的预览代码实例讲解
  • HTML5中video标签如何使用
  • html5的drag和drop的用法示例
  • html5新增的表单控件和表单属性有哪些
  • 如何利用HTML5 canvas旋转图片?(实例演示)

相关文章

  • 分享封装的一个PHP微信支付的类库(扫码、H5、小程序)
  • JavaScript实现UTF-8编解码
  • Illustrator制作蓝色苹果QuickTime标志
  • 帝国cms网站后台关键字自动同步TAG标签更新的方法
  • 利用IF判断自定义Phpcms V9列表的图文并茂
  • 安全狗卸载网站打不开/iis启动不了解决方法
  • 如何增加外链,增加外链方法汇总
  • 宝塔linux面板之​一键安装ffmpeg命令
  • JavaScript中Number()方法的两种用法
  • PHP如何去掉所有HTML标签?

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 分享thinkphp withCredentials跨域问题解决思路
    • Node.js深入学习之浅析require函数中怎么添加钩子
    • PHP实现搜索联想功能(基于字典树算法)
    • 替换uploadify用Huploadify实现上传图片或文件
    • php如何将html转为图片
    • 聊聊Nodejs获取参数的四种方法
    • Photoshop简单方法制作时尚的艺术字教程
    • Phootoshop制作金属质感的字体教程
    • thinkphp的钩子的两种配置和两种调用方法
    • Photoshop合成抽象风格的人物插画教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有