JavaScript图片旋转的解决办法

内容摘要
这篇文章主要为大家详细介绍了JavaScript图片旋转的简单示例,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记。

/**
* 图片旋转
*
* @
文章正文

这篇文章主要为大家详细介绍了JavaScript图片旋转的简单示例,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记。

/**
 * 图片旋转
 *
 * @param 
 * @arrange (www.idcnote.com)
 **/
<script type="text/javascript">
var c1 = document.getElementById("c1");
  ctx = c1.getContext("2d"),
  image = document.createElement("IMG");
image.onload = function() {
  c1.width = image.height;
  c1.height = image.width;
  ctx.translate(0, image.width);
  ctx.rotate(270*Math.PI/180);
  ctx.drawImage(image, 0, 0);
}
image.src = "http://img1.cache.netease.com/img09/logo/logo_v1.gif";
</script>
IE应该用滤镜实现同样的效果。rotate()这个函数接收的是弧度值。角度乘以0.017(2π/360)可以转变为弧度。图片转转转

/**
 * 图片旋转
 *
 * @param 
 * @arrange (www.idcnote.com)
 **/
<style type="text/css">
    html, body {
      margin: 0;
      padding: 0;
    }
</style>

  <canvas id="c1"></canvas>
  <script type="text/javascript">
  var image = document.createElement("IMG");
  image.onload = function() { 
    var c1 = document.getElementById("c1"), rotate = null,    
      len = Math.sqrt(Math.pow(image.width, 2) + Math.pow(image.height, 2)),
      center = {x: len / 2, y: len / 2};
     
    //判断是否为IE
    if(/*@cc_on!@*/0) {
      (function() {
        var div = document.createElement("DIV");
        div.style.position = "relative";
        div.style.marginTop = div.style.marginLeft = len / 2 + "px";
        div.appendChild(image);
        c1.parentNode.insertBefore(div, c1);
        c1.parentNode.removeChild(c1);
        c1 = null;
         
        image.style.position = "absolute";
        //设置滤镜
        image.style.filter = "progid:DXImageTransform.Microsoft.Matrix()";        
        var filter = image.filters.item(0); 
        filter.SizingMethod = "auto expand";
        filter.FilterType = "bilinear"; 
         
        rotate = function(rad){
          var costheta = Math.cos(rad),
            sintheta = Math.sin(rad); 
          filter.M11 = filter.M22 = costheta;
          filter.M12 = -(filter.M21 = sintheta);
           
          //将图片的重心调节到旋转点。
          image.style.top = (-image.offsetHeight) / 2 + 'px';
          image.style.left = (-image.offsetWidth) / 2 + 'px'; 
        }
      })();
    } else {
      (function() {
        var ctx = c1.getContext("2d");            
        rotate = function(rad){     
          c1.width = c1.height = len;
          ctx.translate(center.x, center.y);    
          ctx.rotate(rad);
           
          //绘制图片,并将图片的重心调节到旋转点。
          ctx.drawImage(image, -image.width / 2, -image.height / 2);
        }
      })();
    }   
     
    //开始旋转
    (function() {
      if(rotate) {
        var angle = 0;
        setInterval(function() {        
          var rad = ((angle++)*Math.PI / 180) % 360;
          rotate(rad) 
        }, 10);
      }
    })();
  }
  image.src = "http://img1.cache.netease.com/img09/logo/logo_v1.gif";
  </script>

注:关于JavaScript图片旋转的简单示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!