首先,为什么我会提出这样的方式来进行操作呢?原因还是需求导致:

  在做项目中,有这样一个需求,在进行网页中图片查看的时候,需要对图片的操作有支持旋转和缩放这些操作,看似这样的网上插件有很多,对!但是对于IE8 的支持都不行啊~~~因为虽然很多 插件可以在 IE8进行图片旋转,比如jquery的rotate.js 插件很好用,但是在IE8 下面进行旋转之后,就不能在进行缩放了,因为它会自动生成一个固定大小的object 元素,我们就不能操作这个元素了!要不就是使用canvas, 但是我的需求是在旋转了图片之后,我还能对原生的 img 图片进行大小变化等操作,以上的这些旋转后,都不是原生的对象了.......

  在进行了各种思想斗争之后,没有放弃,继续寻找方法~在网上看到了 IE filter 滤镜的方式来处理旋转,我尝试了一下,发现这样旋转之后,可以保留原生对象,很好~就打算用这样的方式来处理IE8的兼容性问题了~

 <div id="play" style="width:99%;height:99%;">
  <img id="img" src="data:images/bg.jpg" alt="Alternate Text" />
</div>
//**********************   关于IE8 兼容性的处理,使用 IE滤镜与图片旋转  START **********************
function UseIE8()
{
var browser = navigator.appName
var b_version = navigator.appVersion
var version = b_version.split(";");
var trim_Version = version[1].replace(/[ ]/g, "");
if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE6.0") {
return true;
}
else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE7.0") {
return true;
}
else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE8.0") {
return true;
}
return false;
}
function ro0() {
$('#img').css({ filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0)' });
}
//90度
function ro1() {
$('#img').css({ filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)' });
}
//180度
function ro2() {
$('#img').css({ filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)' });
}
//270度
function ro3() {
$('#img').css({ filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)' });
}
//IE8 旋转参数
var rotate_IE8 = 0;
//********************** 关于IE8 兼容性的处理,使用 IE滤镜与图片旋转 END ********************** var imgWidth = "auto";
var imgHeight = "auto";
var rotate = 0;
var index = 0;
var imgArry;
//照片旋转
function rotateImg(size) {
//如果使用的是 IE8
if (UseIE8()) {
var res;
if (size > 0) {
rotate_IE8++;
} else {
rotate_IE8--;
}
res = rotate_IE8 % 4;//因为旋转参数都是 0,1,2,3 的值,所以需要%
if (res < 0)
{
res += 4;
}
switch (res) {
case 0:
ro0();
break;
case 1:
ro1();
break;
case 2:
ro2();
break;
case 3:
ro3();
break;
}
} else {//其他浏览器正常使用 rotate.js 进行处理
rotate += size;
var img = $("#img");
img.rotate(rotate);
}
//还原大小
$("#img").width(imgWidth);
$("#img").height(imgHeight);
}
 //放大缩小图片
function imgToSize(size) {
var img = $("#img");
var oWidth = img.width(); //取得当前图片的实际宽度
var oHeight = img.height(); //取得当前图片的实际高度
if (size < && (oWidth <= || oHeight <= )) {
return;
}
//IE8 特殊处理
if (UseIE8()) {
if (rotate_IE8 % % == ) {
//对于IE8 ,旋转次数奇数的时候 宽高互换
var t = oWidth;
oWidth = oHeight;
oHeight = oWidth;
}
}
img.width(oWidth + size);
img.height(oHeight + size / oWidth * oHeight);
}

  

IE8 下面通过滤镜的方式进行图片旋转的更多相关文章

  1. 兼容ie8 rgba()用法 滤镜filter的用法

    原文  http://blog.csdn.net/westernranger/article/details/40836861 今天遇到了一个问题,要在一个页面中设置一个半透明的白色div.这个貌似不 ...

  2. Android:通过滤镜实现点击图片变暗效果

    实现点击图片(ImageView)变暗效果,有一个较简单的方法,就是讲目标图片设置为背景图片(setBackground),再创建一个selector.xml文件,里面放置一张普通状态时的透明图片,一 ...

  3. 极验反爬虫防护分析之slide验证方式下图片的处理及滑动轨迹的生成思路

    本文要分享的内容是去年为了抢鞋而分析 极验(GeeTest)反爬虫防护的笔记,由于篇幅较长(为了多混点CB)我会按照我的分析顺序,分成如下四个主题与大家分享: 极验反爬虫防护分析之交互流程分析 极验反 ...

  4. 基于Emgucv,C#的图片旋转方式

    /// <summary> /// 图片旋转 --百度 旋转仿射 /// </summary> /// <param name="modelImage" ...

  5. PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转

    [强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...

  6. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  7. 【js】js 让图片旋转

     转http://www.cnblogs.com/ustcyc/p/3760116.html 核心: canvas.style.filter = "progid:DXImageTransfo ...

  8. flex 图片旋转(解决公转和自转问题)

    在Flex中图片的旋转是既有公转和自转的.这样在图片旋转的时候就有一定小麻烦: 为了更好地说明问题,先引入两个概念:“自转”和“公转”.想象一下,地球在绕着太阳公转的同时,它自己也在自转.Flash应 ...

  9. js实现图片旋转

    1.以下代码适用ie9版本 js代码如下: function rotate(o,p){ var img = document.getElementById(o); if(!img || !p) ret ...

随机推荐

  1. 轻量级web富文本框——wangEditor使用手册(4)——配置下拉菜单 demo

    最新版wangEditor: 配置说明:http://www.wangeditor.com/doc.html demo演示:http://www.wangeditor.com/wangEditor/d ...

  2. 中小型研发团队架构实践六:如何用好消息队列RabbitMQ?

    一.写在前面 使用过分布式中间件的人都知道,程序员使用起来并不复杂,常用的客户端 API 就那么几个,比我们日常编写程序时用到的 API 要少得多.但是分布式中间件在中小研发团队中使用得并不多,为什么 ...

  3. .NET平台开源文档与报表处理组件包括Execel PDF Word等

    在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...

  4. 微信小程序详细图文教程-10分钟完成微信小程序开发部署发布

    很多朋友都认为微信小程序申请.部署.发布很难,需要很长时间. 实际上,微信和腾讯云同是腾讯产品,已经提供了10分钟(根据准备资源情况,已完成小程序申请认证)完成小程序开发.部署.发布的方式.当然,实现 ...

  5. Java - "JUC" ReentrantLock释放锁

    Java多线程系列--“JUC锁”04之 公平锁(二) 释放公平锁(基于JDK1.7.0_40) 1. unlock() unlock()在ReentrantLock.java中实现的,源码如下: p ...

  6. org.springframework.beans.factory.BeanDefinitionStoreException Invalid bean defi

    org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 's ...

  7. 从浏览器地址栏输入URL到浏览器呈现数据全过程解析

    一.输入设备(或粘贴)输入 URL,按下 Enter键 或其他按钮开始请求. 二.浏览器开始解析 URL 关于 URL 到相关知识点:什么是URI,URL以及URN,你真的理解了吗. 1.URL 是否 ...

  8. 除虫记之C#调用C函数出现的诡异错误

     作者:朱金灿 来源:http://blog.csdn.net/clever101 同事反映在在项目中使用C#程序调用我们部门编写的C++模块出现一个诡异错误:在调用A算法失败后,其它算法均不能调 ...

  9. FineReport新增多项目甘特图示例及操作

    1.描述 我们在做报表的时候,往往想体现其中随着时间的变化而产生的项目进度的变化和其他相关的系统进展,每当这种时候甘特图便是其中的不二之选.FineReport新增的多项目甘特图可以说是满足了大多数的 ...

  10. JSP内置对象——page对象

    观察可发现,这里面的方法,就是Object这个类下的一些方法,下面进行一个简单的演示,比如“toString()”方法: 运行结果: 这时候看到了一个“org.apache.jsp.page_jsp@ ...