html5 canvas rotate 应用(新浪微博图片旋转效果应用)
时间:2010-05-10
来源:互联网

html5-canvas
看到新浪微博把图片旋转搞的这么火辣,实在忍不住,写个小例子,纯为方便以后项目中应用,就随手可拿了。IE应用的是私有滤镜,而Firefox应用的是即将流行和未来流行的canvas。

预览:http://byzuo.com/demo/canvas-rotate/
下载: http://www.box.net/shared/ol1ynoprr6
补充:
JQuery 插件文件地址:http://byzuo.com/demo/jq/jq-plug ... ts/jquery.rotate.js
JQuery 插件版预览:http://byzuo.com/demo/jq/jq-plugins-rotate
JQuery 插件版下载: http://www.box.net/shared/zvbt1eng5b
如有更好方法,欢迎大家补充。
[ 本帖最后由 dianfish 于 2010-5-18 12:26 编辑 ]
作者: dianfish 发布时间: 2010-05-10
作者: sky94yu 发布时间: 2010-05-10
作者: tangbin1987 发布时间: 2010-05-10
作者: cielkong 发布时间: 2010-05-10
作者: iawsky 发布时间: 2010-05-10

作者: musictea 发布时间: 2010-05-10
作者: hzwujj 发布时间: 2010-05-10
引用:
原帖由 tangbin1987 于 2010-5-10 20:04 发表旋转后IE8失去高度,万恶的IE+

作者: dianfish 发布时间: 2010-05-10
实际应用能限制最大宽度么?
作者: tangbin1987 发布时间: 2010-05-10
代码:
(function($){$.fn.rotate = function(p){
img = $(this)[0];
var n = img.getAttribute('step');
if(n == null) n = 0;
if(p == 'left'){
(n == 3) ? n = 0 : n++;
}else if(p == 'right'){
(n == 0)? n = 3 : n--;
};
img.setAttribute('step', n);
//MSIE
if(document.all) {
img.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation='+ n +')';
//HACK FOR MSIE 8
switch(n){
case 0:
$(this).next().height = img.height;
break;
case 1:
$(this).next().height = img.width;
break;
case 2:
$(this).next().height = img.height;
break;
case 3:
$(this).next().height = img.width;
break;
}
//DOM
}else{
var c = $(this).next('canvas')[0];
if($(this).next('canvas').length == 0){
$(this).css({'visibility': 'hidden', 'position': 'absolute'});
c = document.createElement('canvas');
c.setAttribute('class', 'maxImg canvas');
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);
作者: tangbin1987 发布时间: 2010-05-10
作者: jsw0528 发布时间: 2010-05-11
作者: chenjmdgjl 发布时间: 2010-05-11

作者: KOEN301 发布时间: 2010-05-11
作者: mxcool 发布时间: 2010-05-12
作者: EvenChen 发布时间: 2010-05-12
作者: kwunkuklan 发布时间: 2010-05-12
作者: slj20 发布时间: 2010-05-13
作者: xyq159589 发布时间: 2010-05-14
作者: cwq2jxl 发布时间: 2010-05-14
作者: roye2008 发布时间: 2010-05-14
作者: jgs1982 发布时间: 2010-05-14
作者: keringing 发布时间: 2010-05-15
作者: yoom 发布时间: 2010-05-15
作者: cychai 发布时间: 2010-05-15
作者: lzl777 发布时间: 2010-05-16
提示:您可以先修改部分代码再运行
[ 本帖最后由 gollum 于 2010-5-17 23:15 编辑 ]
作者: gollum 发布时间: 2010-05-17
还是佐佐的好些,我最后用在项目上的就参考了佐佐的旋转方法。
作者: tangbin1987 发布时间: 2010-05-17

作者: gollum 发布时间: 2010-05-18
作者: xueshuibing 发布时间: 2010-05-18
引用:
原帖由 cwq2jxl 于 2010-5-14 08:40 发表希望LZ封装成JQ插件,以便使用 谢谢
JQuery 插件文件地址:http://byzuo.com/demo/jq/jq-plug ... ts/jquery.rotate.js
JQuery 插件版预览:http://byzuo.com/demo/jq/jq-plugins-rotate
JQuery 插件版下载: http://www.box.net/shared/zvbt1eng5b
作者: dianfish 发布时间: 2010-05-18
提示:您可以先修改部分代码再运行
作者: kfguoguo 发布时间: 2010-05-18
我现在图片是相对居中的,怎么让他围绕中心点旋转,即旋转后始终保持居中!
作者: zwb185 发布时间: 2010-05-25
作者: javysun 发布时间: 2010-05-27
作者: zixia0601 发布时间: 2010-06-05
作者: ai68738651 发布时间: 2010-06-11
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28