小tip: 使用CSS将图片转换成黑白(灰色、置灰)

可能早就知道,像汶川这种糟糕的日子网站全灰在IE下是可以轻松实现的(filter: gray;),不过,当时,其他浏览器是无解的。不过,时代发展,如今,CSS3的逐步推进,我们也开始看到“黑白效果”大规模应用于实际的可能。

CSS3 greyscale 滤镜实现

如下测试代码:

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

    filter: grayscale(100%);

    filter: gray;
}

HTML代码:

<img src="mm1.jpg" />
<img src="mm1.jpg" class="gray" />

如果你手上的浏览器是Chrome18+, 您可以狠狠地点击这里:CSS3 greyscale 滤镜与照片黑白

可以看到类似文章一开始展示的黑白对比效果图。

其他些浏览器,如FireFox很快就会跟上实现。当然,要实现(比方说)FireFox 4浏览器上照片变黑白的效果,也是可以的。可以使用SVG的灰度滤镜效果。

SVG滤镜实现

我们新建一个空白文本文件,比如说:gray.txt. 拷贝进去如下的XML代码:

<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>

然后,修改后缀.txt → .svg. 然后就可以调用了~~

如下CSS调用代码:

filter: url(gray.svg#grayscale);

然后,效果就出来了。如果你手上的浏览器是FireFox4+,您可以狠狠地点击这里:SVG滤镜实现照片黑白demo

别忘了IE浏览器

IE下实现上面已经提过,就是:

filter: gray;

至少IE7~9都是支持的。最近较懒,IE6懒得去测,支持与否不知。经验来看,应该是支持的。

我需要一个一统江山的方法

一统江山(完全兼容),如果单纯想通过CSS,也是可以的,你所要做的就是:天天拿个鱼竿去黄浦江钓鱼,年复一年,日复一日……然后,两年后,只要两年,把上面两个demo页面F5一下,就可以了!很简单吧!

如果嫌上面的做法过于伦敦,且你也不是一根筋,到是有个一统江山的方法,不过不是CSS的干货,一个貌似有点名气的Greyscale.js

用法很简单,引用JavaScript文件,如下:

<script src="http://james.padolsey.com/demos/grayscale/grayscale.js"></script>

然后,一句话:

grayscale(document.getElementById("thisImage"));

或DOM元素集:

grayscale(document.getElementsByTagName("img"));

如果你喜欢使用jQuery,还可以使用:

grayscale($("#thisImage"));

很简单吧。

实现原理:IE浏览器下是添加灰度滤镜,这个大家都懂的。其他浏览器貌似使用Canvas中的getImageData方法,然后对每个像素点进行灰度转换~~

因此,在现代浏览器下,对于该方法,图片的灰度处理有两个局限性:
1. 速度。300*300这张一般般大小的图片变灰就要数秒之久;
2. 跨域。安全性机制,无法转换跨域的图片为黑白色。

您可以狠狠地点击这里:Greyscale.js照片变灰兼容性实现demo

截图跟上面的一致,略。

补充于2015年12月21日
很多人邮件问,IE10, IE11这两个高不成低不就的浏览器怎么办?

我个人都是借助SVG实现(专门为IE10-IE12)的,讲毛玻璃效果的时候有类似实现。

1. 页面载入(可以请求载入,或者直接放在HTML代码中)上面gray.txt对应的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>

2. 然后将图片转为SVG图片引用,filter属性值指向grayscale(上面红色的id值)。例如

<svg>
    <image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="zxx.jpg" x="0" y="0" width="256" height="190" filter="url(‘#grayscale‘)"></image>
</svg>

over~

时间: 2024-11-10 07:33:27

小tip: 使用CSS将图片转换成黑白(灰色、置灰)的相关文章

小tip: 使用CSS将图片转换成黑白(灰色、置灰) ? 张鑫旭-鑫空间-鑫生活

小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=2547 //zxx: 最近很积极地折腾手机页面的些东西,加上其他一些人生重要的事,所以木有更新. 可能早就知道,像汶川这种糟糕

[转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟就落地了嘛,然后捡瓜的人很多,然后国内外开始了各种探讨,从界面到动画,从兼容到实现等.其中,“毛玻璃”一次梆梆出世

使用CSS将图片转换成黑白(灰色、置灰)

CSS3 greyscale 滤镜实现 效果如下: 用滤镜实现hover 效果. //dom节点 <img class="filter" src="img/index/hx2.png"> css设置图片滤镜为灰色 .filter{ filter: grayscale(100%);} 用jq实现hover效果 $(".filter").hover(function() { $(this).css('filter','grayscale(

将图片转换成黑白(灰色、置灰)

网站图片置灰现在已经很常见了,最近上网找了些资料,基本都是用css3 grayscale和grayscale.js,做了测试,发现用CSS或greyscale.js都不能完全兼容. 测试浏览器版本:google.google.firefox.opera.safari.IE7-9 css3 grayscale很多都是用这段CSS: -webkit-filter: grayscale(100%);/*兼容google.opera*/ -moz-filter: grayscale(100%);/*FF

android 将图片转换成黑白图片

先调用android的系统工具,获取图片生成bitmap文件,再使用android中的二值化技术,将图片转化成黑白图片,主界面代码: package com.example.blackwhite; import java.io.IOException; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore;

wkhtmltopdf 项目问题 将小图片转换成流对象页面输出

项目工作中问题,linux环境下,使用wkhtmltopdf 做html转换成pdf下载,页面存在图片,转换出来的pdf 生成的html可以正常使用,图片显示正常,直接将生成的html路径转换成pdf 图片位置,总是显示空白; 图片空白问题,自己也查阅了网上好多信息,并没有得到如意的结果,只能退而求其次自己想办法了; 自己使用的解决方法,方便大家工作使用,将生成静态页面模板中的图片,手动的调用方法转换成流对象;在页面通过 <img src="data:image/jpg;base64,XX

小tip: base64:URL背景图片与web页面性能优化——张鑫旭

一.base64百科 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息. 某人: 唉,我彻底废柴了,为何上面明明是中文,洒家却看不懂嘞,为什么?~~ 好吧,我也不喜欢专业术语的解释.你只要知道,base64编码就是长得像下面这样子的代码:thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg== 上面代码大家都熟悉吧,迅雷下载链接哦(咳咳,该地址很纯洁),

小tip: base64:URL背景图片与web页面性能优化

转自:http://www.zhangxinxu.com/wordpress/?p=2341 一.base64百科 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息. 某人: 唉,我彻底废柴了,为何上面明明是中文,洒家却看不懂嘞,为什么?~~ 好吧,我也不喜欢专业术语的解释.你只要知道,base64编码就是长得像下面这样子的代码: thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTF

照片转成pdf 如何把jpg图片转换成pdf格式

大家不知道还记不记得,那句台词"好男人就是我,我就是xxx"曾小贤.没错就是他<爱情公寓>毫无疑问近几年比较有特点的喜剧了,而且每个人都在盼望着第五季.尤其是到第四部结尾的时候,大家都希望曾小贤能和一菲在一起,在这时候它结束了,我们都幻想着爱情公寓第五季,可是迟迟没有音信.大家依然还记得子乔的小姨妈.楼下的小黑.婉瑜.展博. 这群年轻人跟现实生活中的我们一样,过着合租群租的生活,我们没有他们那么多的欢声笑语,可能这就是电视剧和现实差距,当我们最爱的几位主演都有了自己新的工作