让图片旋转任意角度及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 相关文章推荐
JS获取dom 对象 ajax操作 读写cookie函数
Nov 18 Javascript
javascript来定义类的规范小结
Nov 19 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
Jun 27 Javascript
使用jQuery避免鼠标双击的解决方案
Aug 21 Javascript
JS判断对象是否存在的10种方法总结
Dec 23 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
JavaScript之AOP编程实例
Jul 17 Javascript
常用原生JS兼容性写法汇总
Apr 27 Javascript
Boostrap入门准备之border box
May 09 Javascript
微信小程序异步处理详解
Nov 10 Javascript
jquery实现左右轮播切换效果
Jan 01 jQuery
JavaScript引用类型Function实例详解
Aug 09 Javascript
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
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
js实现随机点名
2021/01/19 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Hadoop中的Python框架的使用指南
2015/04/22 Python
Python内建模块struct实例详解
2018/02/02 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
python matplotlib拟合直线的实现
2019/11/19 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
学校安全工作制度
2014/01/19 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
英语邀请函范文
2015/02/02 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
Redis实现短信验证码登录的示例代码
2022/06/14 Redis