zoukankan      html  css  js  c++  java
  • js图片旋转

      <script type="text/javascript" language="javascript">
        function rotate(id, angle, whence) {
          var p = document.getElementById(id);
          if (!whence) {
            p.angle = ((p.angle == undefined ? 0 : p.angle) + angle) % 360;
          }
          else {
            p.angle = angle;
          }
          if (p.angle >= 0) {
            var rotation = Math.PI * p.angle / 180;
          }
          else {
            var rotation = Math.PI * (360 + p.angle) / 180;
          }
          var costheta = Math.cos(rotation);
          var sintheta = Math.sin(rotation);
          if (document.all && !window.opera) {
            var canvas = document.createElement('img');
            canvas.src = p.src;
            canvas.height = p.height;
            canvas.width = p.width;
            canvas.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11=" + costheta + ",M12=" + (-sintheta) + ",M21=" + sintheta + ",M22=" + costheta + ",SizingMethod='auto expand')";
          }
          else {
            var canvas = document.createElement('canvas');
            if (!p.oImage) {
              canvas.oImage = new Image();
              canvas.oImage.src = p.src;
            }
            else {
              canvas.oImage = p.oImage;
            }
            //alert(canvas.width)
            canvas.style.width = canvas.width = Math.abs(costheta * canvas.oImage.width) + Math.abs(sintheta * canvas.oImage.height);
            canvas.style.height = canvas.height = Math.abs(costheta * canvas.oImage.height) + Math.abs(sintheta * canvas.oImage.width);
            var context = canvas.getContext('2d');
            context.save();
            if (rotation <= Math.PI / 2) {
              context.translate(sintheta * canvas.oImage.height, 0);
            }
            else if (rotation <= Math.PI) {
              context.translate(canvas.width, -costheta * canvas.oImage.height);
            }
            else if (rotation <= 1.5 * Math.PI) {
              context.translate(-costheta * canvas.oImage.width, canvas.height);
            }
            else {
              context.translate(0, -sintheta * canvas.oImage.width);
            }
            context.rotate(rotation);
            context.drawImage(canvas.oImage, 0, 0, canvas.oImage.width, canvas.oImage.height);
            context.restore();
          }
          canvas.id = p.id;
          canvas.angle = p.angle;
          p.parentNode.replaceChild(canvas, p);
        }
    
        //向右旋转
        function rotateRight(id, angle) {
          rotate(id, angle == undefined ? 90 : angle);
        }
        //向左旋转
        function rotateLeft(id, angle) {
          rotate(id, angle == undefined ? -90 : -angle);
        }
      </script>

    调用方法:

    <div class="content">
      <div class="data">
        <a href="javascript:void(0)" style="font-weight: bold; text-decoration: none; font-size: 16px;"
          onclick="rotateRight('theimage',90);">右转</a> 
    <a href="javascript:void(0)" style="font-weight: bold; font-size: 16px; text-decoration: none;"
    onclick
    ="rotateLeft('theimage',90);">左转</a><br>
    <img src="a.jpg" id="theimage" onload="resizeimg(this,this.width,this.height)" width="100%" alt="800×1422" style="cursor: pointer;" /> </a> <div style="clear: both"> </div> </div> </div>
  • 相关阅读:
    Visual GC(监控垃圾回收器)
    垃圾收集(GC)中如何确定哪些内存是"垃圾
    Java for循环和foreach循环的性能比较
    <mvc:annotation-driven />做了什么
    聊一聊分布式锁的设计
    String类对象的比较
    Java 中 Comparable 和 Comparator 比较
    系统对接API调用
    深入理解Java中的组合和继承
    面向对象设计七大原则
  • 原文地址:https://www.cnblogs.com/ustcyc/p/3760116.html
Copyright © 2011-2022 走看看