Css中将图片调为灰色,是利用滤镜的效果进行渲染的
不同的浏览器需要不同的前缀进行支持。
具体将图片调整为灰色的代码如下
img {filter: grayscale(100%) //默认
-webkit-filter: grayscale(100%) //谷歌浏览器
-moz-filter: grayscale(100%) //火狐浏览器
-ms-filter: grayscale(100%) //IE核心浏览器
-o-filter: grayscale(100%) //Oprea浏览器
-webkit-transition:all 1s ease-in-out //这是设置过渡时间效果,有一个缓冲时间
-o-transition:all 1s ease-in-out
-moz-transition:all 1s ease-in-out
-ms-transition:all 1s ease-in-out
}
若需要调整为彩色
img:hover{
filter: grayscale(0%) //默认
-webkit-filter: grayscale(0%) //谷歌浏览器
-moz-filter: grayscale(0%) //火狐浏览器
-ms-filter: grayscale(0%) //IE核心浏览器
-o-filter: grayscale(0%) //Oprea浏览器
-webkit-transition:all 1s ease-in //这是设置过渡时间效果,有一个缓冲时间
-o-transition:all 1s ease-in
-moz-transition:all 1s ease-in
-ms-transition:all 1s ease-in
}
1、CSS Filter使用CSS过滤器属性可能是最简单的方法把图像变成灰度。以往,IE浏览器有一个专有的CSS属性称为过滤应用自定义效果包括灰度。
现在,过滤器属性是CSS3规范的一部分,并支持在一些浏览器,Firefox、Chrome和Safari。以前,我们也提到Webkit过滤器,它不仅将图像变成灰色也可以变成褐色和模糊效果。
添加如下CSS样式可以将图像变成灰色
代码如下:
img {
-webkit-filter: grayscale(1)/* Webkit */
filter:gray/* IE6-9 */
filter: grayscale(1)/* W3C */
}
支持IE6-9和Webkit浏览器(Chrome 18+, Safari 6.0+, and Opera 15+)
(注意:这段代码在Firefox上无效果。)
2、Javascript
第二种方法是通过使用JavaScript技术上应该支持所有JavaScript的浏览器,包括IE6以下
代码来自Ajax Blender.
代码如下:
varimgObj = document.getElementById('js-image')
functiongray(imgObj) {
varcanvas = document.createElement('canvas')
varcanvasContext = canvas.getContext('2d')
varimgW = imgObj.width
varimgH = imgObj.height
canvas.width = imgW
canvas.height = imgH
canvasContext.drawImage(imgObj, 0, 0)
varimgPixels = canvasContext.getImageData(0, 0, imgW, imgH)
for(vary = 0y <imgPixels.heighty++){
for(varx = 0x <imgPixels.widthx++){
vari = (y * 4) * imgPixels.width + x * 4
varavg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3
imgPixels.data[i] = avg
imgPixels.data[i + 1] = avg
imgPixels.data[i + 2] = avg
}
}
canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height)
returncanvas.toDataURL()
}
imgObj.src = gray(imgObj)
3、SVG
第三种方法来自SVG Filter.,你需要创建一个SVG文件,并将以下代码写在里面,保存命名为***.svg
代码如下:
<svgxm .w3.org/2000/svg">
<filterid="grayscale">
<feColorMatrixtype="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>
然后利用过滤器的属性,我们可以通过SVG文件中的元素的ID连接SVG文件
[code]
img {
filter:url('img/gray.svg#grayscale')
}
这个是需要应用css的滤镜来实现的,但是只有IE浏览器支持。
代码实例如下:
<html><head>
<title>Gray灰度</title>
<style>
<!--
body{
margin:12px
}
.gray{
filter:gray /* 黑白图片 */
}
-->
</style>
</head>
<body>
<img src="building5.jpg">&nbsp
<img src="building5.jpg" class="gray">
</body>
</html>