让图片旋转任意角度及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 Array.sort() 跨浏览器下需要考虑的问题
Dec 07 Javascript
jquery load事件(callback/data)使用方法及注意事项
Feb 06 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
Jun 26 Javascript
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
javascript基于DOM实现权限选择实例分析
May 14 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
Oct 25 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
一个简单不报错的summernote 图片上传案例
Jul 11 Javascript
移动端点击态处理的三种实现方式
Jan 12 Javascript
AngularJS表单验证功能
Oct 19 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
关于vue的npm run dev和npm run build的区别介绍
Jan 14 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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
jQuery 使用个人心得
2009/02/26 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
jQuery动态添加
2016/04/07 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
初步讲解Python中的元组概念
2015/05/21 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
keras之权重初始化方式
2020/05/21 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
工业设计专业推荐信
2013/10/29 职场文书
万年牢教学反思
2014/02/15 职场文书
完整版商业计划书
2014/09/15 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers