让图片旋转任意角度及JQuery插件使用介绍


Posted in Javascript onMarch 20, 2013

引入下方的jquery.rotate.js文件,然后通过$("选择器").rotate(角度);可以旋转任意角度,
例如$("#rotate-image").rotate(45);把这句放在$(document).ready(function(){ });中
就是将id为rotate-image的图片旋转45度。

不过,貌似在Chrome中总是不显示。
唉,找了两个小时,才发现Chrome太坑爹了,没法获取图片的长宽。
解决办法是,把$("#rotate-image").rotate(45);放在
$(window).load(function(){ });中,因为在Chrome中图片在执行$(document).ready(function(){ });中的语句时并没有加载完图片,坑爹啊。

另外可以更方便的通过调用$("选择器").rotateRight()和$("选择器").rotateLeft()来分别向右旋转90度和向左旋转90度。

jquery.rotate.js:

jQuery.fn.rotate = function(angle,whence) { 
var p = this.get(0); 
// we store the angle inside the image tag for persistence 
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.round(Math.cos(rotation) * 1000) / 1000; 
var sintheta = Math.round(Math.sin(rotation) * 1000) / 1000; 
//alert(costheta+","+sintheta); 
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; 
} 
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); 
} 
jQuery.fn.rotateRight = function(angle) { 
this.rotate(angle==undefined?90:angle); 
} 
jQuery.fn.rotateLeft = function(angle) { 
this.rotate(angle==undefined?-90:-angle); 
}
Javascript 相关文章推荐
javascript web对话框与弹出窗口
Feb 22 Javascript
jquery1.10给新增元素绑定事件的方法
Mar 06 Javascript
三种方式获取XMLHttpRequest对象
Apr 21 Javascript
详解JavaScript对W3C DOM模版的支持情况
Jun 16 Javascript
jQuery实现带延迟效果的滑动菜单代码
Sep 02 Javascript
jQuery  ready方法实现原理详解
Oct 19 Javascript
ThinkJS中如何使用MongoDB的CURD操作
Dec 13 Javascript
JavaScript实现旋转轮播图
Aug 18 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
Mar 01 Javascript
javascript的this关键字详解
May 20 Javascript
vue项目添加多页面配置的步骤详解
May 22 Javascript
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
jquery在Chrome下获取图片的长宽问题解决
Mar 20 #Javascript
javascript中[]和{}对象使用介绍
Mar 20 #Javascript
javascript中节点的最近的相关节点访问方法
Mar 20 #Javascript
javascript中注册和移除事件的4种方式
Mar 20 #Javascript
jQuery控制输入框只能输入数值的小例子
Mar 20 #Javascript
jQuery实现id模糊查询的小例子
Mar 19 #Javascript
JS文本框不能输入空格验证方法
Mar 19 #Javascript
You might like
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
Python3.5 创建文件的简单实例
2018/04/26 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
python 实现单通道转3通道
2019/12/03 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
高考自主招生自荐信
2013/10/20 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
2014年秘书工作总结
2014/11/25 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android