`

img之灰度兼容

阅读更多

*、项目中遇到一个图片需要灰度处理的需求。

 

    于是乎,开发第一阶段实现方案是:

.gray { 
    -webkit-filter: grayscale(90%);
    -moz-filter: grayscale(90%);
    -ms-filter: grayscale(90%);
    -o-filter: grayscale(90%);
    filter: grayscale(90%);
    filter: gray;
}

 

   本来挺高兴,因为大多数浏览器filter是有效的,然而让人抓狂的IE就是会给你开玩笑,因为IE10以上是不       支持filter,于是乎出现了第二版实现方案:

css调用
.gray { 
    filter: url(gray.svg#grayscale);
}

gray.svg文件
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
    <filter id="grayscale">
        <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/>
    </filter>
</svg>


 

    然而该方法我并未成功集成,郁闷中,最后无奈间找到了一个炒鸡链接找到了宝藏

引用js文件-可转储到本地哦,你懂的
<script src="http://james.padolsey.com/demos/grayscale/grayscale.js"></script>

调用该js中的函数
$("img”).grayscale();即可

    该方法也有不完美的地方比如说图片还未加载完,那么执行灰度肯定是失败的,所以需要以下小操作

1、首先让图片每次都重新加载,时间戳什么的!!!
2、先执行灰度指令,然后再为img赋予src属性,所以此前可以先用srctemp属性暂存src应有的值。
3、更新src后就能看到效果了,棒棒的!
我的代码:
if($(this).attr("过滤条件") != '') {
	$(this).load(function(){
		grayscale($(this));
	});
        缓存地址赋值给src
	$(this).attr("src",$(this).attr("srctemp"));
}

 

 然而在chrome中遇到了一个无限加载图片的问题,导致内存一直在狂飙,所以需要以下小操作

判断若是chrome的话就不需要该js的操作了!
if(不是chrome) {//因为chrome对filter的支持较好,所以不执行灰度函数亦可
   grayscale($(this));
}
原因是因为:
(我发现的浏览器2017年9月18日14:55:36)chrome和火狐
需要这样调用document.createElement('canvas').getContext('2d')
而其他浏览器是document.createElement('canvas')[0].getContext('2d'); 

 

 

-------------------------------------------------------------------资源小仓库-------------------------------------------------------------

*、多种灰度方案的集合体

http://www.zhangxinxu.com/wordpress/2012/08/css-svg-filter-image-grayscale/

 

*、图片预加载参考方案

http://blog.csdn.net/kongjiea/article/details/24308053

 

*、判断浏览器的类型

//判断是什么类型的浏览器
function getBrowser(){
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
    var isOpera = userAgent.indexOf("Opera") > -1;
    if (isOpera) {
        return "Opera"
    }; //判断是否Opera浏览器
    if (userAgent.indexOf("Firefox") > -1) {
        return "FF";
    } //判断是否Firefox浏览器
    if (userAgent.indexOf("Chrome") > -1){
	  return "Chrome";
	 }
    if (userAgent.indexOf("Safari") > -1) {
        return "Safari";
    } //判断是否Safari浏览器
    if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
        return "IE";
    }; //判断是否IE浏览器
}

至此2017年9月18日14:34:49,各种浏览器的不兼容告一段落,perfect!

分享到:
评论

相关推荐

    RTCP图像灰度化算法

    虽然这个描述提到OpenCV3未被测试,但通常OpenCV的更新版本会保持向后兼容性,因此大部分在OpenCV2中工作的代码也应该能在OpenCV3上运行。 灰度化的基本原理是将彩色图像的每个像素由RGB三个分量(红色、绿色、蓝色...

    Python中使用PIL快速实现灰度图源码以及资源

    对于更高级的图像处理需求,可以考虑使用PIL的升级版库,如Pillow,它增加了更多的功能和兼容性。 总结一下,Python中的PIL库提供了一种简单且高效的方法来处理灰度图像。通过调用`convert()`函数并传入参数'L',...

    erdasIMG文件格式

    IMG可以存储RGB、CMYK、灰度等多种色彩空间的图像,并支持多光谱图像的存储。多光谱图像通常包含多个波段,每个波段对应特定的电磁辐射范围,对于分析地表特性非常有用。 **5. 压缩选项** IMG文件支持无损和有损...

    Img2lcd 图片取模软件

    1. **图像转换**:软件能够读取常见的图像文件格式,如BMP、JPG等,并将其转换为适合TFT LCD的特定格式,如RGB565或灰度等级。 2. **自定义设置**:用户可以根据目标LCD的分辨率、色彩深度和像素排列方式调整参数,...

    lv-img-conv20230116-142935

    `lv_img_conv`是LVGL库的一部分,它的主要功能是将标准的图像格式(如PNG、JPG、BMP等)转换为LVGL兼容的格式。这种转换包括压缩图像数据,减少内存占用,以及根据目标平台的特性调整图像色彩模式。此外,`lv_img_...

    反灰效果 html img for html 5

    开发者可以根据项目需求和浏览器兼容性选择合适的技术。在给定的文件列表中,`demo.html`可能是实现这一效果的示例代码,`grayscale.svg`可能包含了SVG滤镜,`css`目录下的文件可能包含CSS样式,`images`目录下可能...

    网页变黑白色,兼容IE10、IE11

    在网页设计中,有时为了表示哀悼或特殊纪念,我们需要将网页的颜色调整为黑白色或灰度模式。...通过以上方法,我们可以确保在各种浏览器环境下实现网页的黑白色或灰度显示,同时保证了与IE10和11的兼容性。

    计算峰值信噪比

    然后通过`[h w]=size(img)`获取图像的尺寸,其中h是高度,w是宽度。接着,`imgn=a2` 表示参考图像为a2,假设是经过某种处理的版本。这里`B=8`代表图像的位深度,通常8位表示256个灰度等级。`MAX=2^B-1` 计算出最大...

    让网页图片变灰色将彩色图像变成灰度的三种方法

    在网页设计中,将彩色图像转换为灰度图像可以增加艺术感或强调视觉焦点。本文将探讨三种将网页图片变为灰色的方法,适用于不同的浏览器环境。 1. CSS Filter CSS Filter属性是CSS3的一个功能,允许对元素应用各种...

    使网页变灰,支持IE、FireFox、Opera、360浏览器等

    这个脚本可能通过遍历页面上的所有元素,为每个元素创建一个新的`&lt;img&gt;`标签(如果元素是图片),或者创建新的CSS样式(如果元素不是图片),并应用灰度滤镜。它可能使用CSS的`-ms-filter`属性来兼容IE浏览器。 3. ...

    huiduhua.rar_图像读入

    同时,选择合适的图像库和方法取决于项目需求,例如性能要求、兼容性或者功能丰富程度。 总的来说,"huiduhua.rar_图像读入"这个项目涉及到了真彩图像的读取和灰度转换两个核心步骤,这是图像处理中的基础操作,...

    跨浏览器彩色图片转黑白图片jquery插件

    对于浏览器兼容性,jquery.gray.js尤其考虑了旧版本的Internet Explorer(如IE6),这是一个在现代浏览器广泛普及之前常用的浏览器,由于其对某些Web标准的支持有限,所以兼容它的插件通常需要额外的技术处理。...

    Pillow-1.4.zip

    Pillow库是Python中最常用的一个图像处理库,它是 PIL(Python Imaging Library)的分支,提供了更友好的API和更广泛的兼容性。Pillow-1.4.zip 文件正是这个库的一个早期版本,包含了Pillow库的核心功能和相关组件。...

    Pillow-3.3.3.tar.gz

    img = img.convert('L') # 转换为灰度图像 ``` 2. 图像滤波: ```python from PIL import ImageFilter blurred_img = img.filter(ImageFilter.BLUR) blurred_img.save('blurred_image.jpg') ``` 3. 图像处理...

    MATLAB的isgray.m文件

    例如,`size(img, 3)`如果返回的结果是1,那么该图像可能为灰度图像。 - **比较颜色通道**:对于RGB图像,有三个颜色通道(红、绿、蓝)。如果这三个通道的数据相同,那么图像可能是灰度的。可以使用`isequal`或`...

    读取单通道的tif格式图片

    此外,TIFF还支持多种色彩空间,如灰度、RGB、CMYK等,这使其成为专业应用中的首选格式之一。 #### 读取单通道TIFF图像 单通道TIFF图像通常指的是灰度图像,这种类型的图像只包含一个颜色通道,即灰度值。处理这类...

    python+opencv3生成一个自定义纯色图教程

    注意:这里指定安装版本为3.4.14.47,确保与教程内容兼容。 #### 二、理解图像的基本结构 在计算机视觉领域,图像通常被表示为二维矩阵。每个矩阵中的元素对应着一个像素值。对于灰度图像来说,这个像素值通常是一...

    Pillow-8.0.1.tar.gz

    在Python编程中,处理图像是一项常见的任务,而Pillow库就是Python中最流行的图像处理库之一。Pillow是 PIL(Python Imaging Library)的一个分支,它继承了PIL的强大功能,并进行了优化,使其更加易用,兼容性更强...

Global site tag (gtag.js) - Google Analytics