让图片旋转任意角度及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 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
Web开发者必备的12款超赞jQuery插件
Dec 03 Javascript
基于jquery打造的百分比动态色彩条插件
Sep 19 Javascript
使用jquery清空、复位整个输入域
Apr 02 Javascript
js实现密码强度检测【附示例】
Mar 30 Javascript
js正则表达式注册页面表单验证
Oct 11 Javascript
微信小程序实现根据字母选择城市功能
Aug 16 Javascript
vue的token刷新处理的方法
Jul 17 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
Dec 06 Javascript
详解vue组件中使用路由方法
Feb 12 Javascript
Node.js实现简单的爬取的示例代码
Jun 25 Javascript
vue实现单一筛选、删除筛选条件
Oct 26 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
ADODB的数据库封包程序库
2006/12/31 PHP
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
python检测lvs real server状态
2014/01/22 Python
用python登录Dr.com思路以及代码分享
2014/06/25 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Viking比利时:购买办公用品
2019/10/30 全球购物
工程部经理岗位职责
2013/12/08 职场文书
食品安全工作方案
2014/05/07 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
重阳节活动总结
2014/08/27 职场文书
大学生见习报告总结
2014/11/04 职场文书
北京故宫导游词
2015/01/31 职场文书
人事专员岗位职责
2015/02/03 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
孝女彩金观后感
2015/06/10 职场文书
田径运动会广播稿
2015/08/19 职场文书
asyncio异步编程之Task对象详解
2022/03/13 Python
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python