canvas图片左右旋转效果

canvas图片左右旋转效果

添加时间:2021-03-16 13:23:03
站长推荐丨赞助论坛,可获取海量资源终身免费下载权限奥!
举报 举报
收藏
预览
附件 附件
  • 模板类型模板类型:图片插件
  • 模板颜色模板颜色:初级
  • 下载积分下载积分:28 米粒
  • 下载权限下载权限:

    赞助会员

我们使用HTML5的canvas标签可对图片进行旋转操作,对于ie8版本以下不支持HTML5的浏览器,可使用IE特有的滤镜效果来实现...

分类:图片代码 > 图片插件 难易:初级

HTML

首先放一张图片,在图片的上方有两个左右旋转按钮,我们通过rotate()函数来控制图片左右旋转。

<div id="buttons"> 
   <a href="javascript:void(0);" id="btn_left" onclick="rotate('image', 'left')">向左转</a> 
   <a href="javascript:void(0);" id="btn_right" onclick="rotate('image', 'right')">向右转</a> 
  </div> 
  <div id="img_area"> 
   <img src="images/canvas.png" alt="旋转图片" id="image" /> 
</div>

Javascript

rotate()有两个参数,第一个obj表示被旋转图片的id,第二个参数arr表示旋转方向,固定两个值:left(向左)和right(向右)。

function rotate(obj, arr) {
    var img = document.getElementById(obj);
    if (!img || !arr) return false;
    var n = img.getAttribute('step'); //记录上下左右四种旋转状态
    if (n == null) n = 0;
    if (arr == 'left') {
       (n == 0) ? n = 3 : n--;
    } else if (arr == 'right') {
       (n == 3) ? n = 0 : n++;
    }
    img.setAttribute('step', n);
}

对于IE8以下版本,可以使用他们特有的滤镜来实现旋转效果。

if (document.all) { //判断是否是IE浏览器 ,返回true 说明是IE
    img.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + n + ')';
    //HACK FOR MSIE 8
    switch (n) {
    case 0:
        img.parentNode.style.height = img.height;
        break;
    case 1:
        img.parentNode.style.height = img.width;
        break;
    case 2:
        img.parentNode.style.height = img.height;
        break;
    case 3:
        img.parentNode.style.height = img.width;
        break;
    }
}

除了IE8以下版本,我们使用HTML5的canvas进行旋转,代码如下:

var c = document.getElementById('canvas_' + obj);
if (c == null) {
    img.style.visibility = 'hidden';
    img.style.position = 'absolute';
    c = document.createElement('canvas');
    c.setAttribute("id", 'canvas_' + obj);
    img.parentNode.appendChild(c);
}
var canvasContext = c.getContext('2d');
switch (n) {
default:
case 0:
    c.setAttribute('width', img.width);
    c.setAttribute('height', img.height);
    canvasContext.rotate(0 * Math.PI / 180);
    canvasContext.drawImage(img, 0, 0);
    break;
case 1:
    c.setAttribute('width', img.height);
    c.setAttribute('height', img.width);
    canvasContext.rotate(90 * Math.PI / 180);
    canvasContext.drawImage(img, 0, -img.height);
    break;
case 2:
    c.setAttribute('width', img.width);
    c.setAttribute('height', img.height);
    canvasContext.rotate(180 * Math.PI / 180);
    canvasContext.drawImage(img, -img.width, -img.height);
    break;
case 3:
    c.setAttribute('width', img.height);
    c.setAttribute('height', img.width);
    canvasContext.rotate(270 * Math.PI / 180);
    canvasContext.drawImage(img, -img.width, 0);
    break;
}

对于图片旋转的jQuery插件还有更强大的,例如:jQueryRotate.js,您有兴趣可以去网上搜一搜,其他的就不多说了,总之,希望对您的学习有所帮助。

相关内容推荐
资源求助发帖
查看更多发帖

*

回帖描述:

*

链接类型:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
热点内容推荐
标题:canvas图片左右旋转效果

*

描述:
平均回复时间:3-10分钟
规则介绍:悬赏寻求论坛网友分享资源,站点对分享内容的准确性,合法性,版权等没有足够的监管能力。如果您发现资源不正确,无法使用,不符合法律法律等情况,您可以直接举报资源。站长将尽快核实您的举报,并根据情况,采取封号,退换米粒等处理。

*

回帖描述:

*

链接类型:

*

阅读权限:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
  • 背景波浪
  • 背景波浪
  • 波浪
  • 波浪
客服
在线咨询
周一 至 周日 9:00 ~ 22:00
QQ:1326974360
微信:juyoubuluo6688
客服热线
18205485173
工作日 9:00 ~ 18:00
微信扫码咨询
客户服务
欢迎咨询服务
咨询量较多时,请耐心等待
社群

关注公众号

获取更多资讯

扫码进群(QQ)

与更多大牛交流沟通

0.100384s