全国服务热线:4008-888-888

技术知识

让网站照片转化成灰色实际效果的3种方式

我1直喜爱灰度值图象由于我觉得她们看起来更有造型艺术感。许多照片编写如Photoshop很非常容易把你的五颜六色图象变为灰度值。乃至有挑选调剂色调深层和色彩。悲剧的是,这样的实际效果想做在互联网上其实不非常容易,由于访问器有差别。
1、CSS Filter
应用CSS过虑器特性将会是最简易的方式把图象变为灰度值。过去,IE访问器有1个特有的CSS特性称为过虑运用自定实际效果包含灰度值。
如今,过虑器特性是CSS3标准的1一部分,并适用在1些访问器,Firefox、Chrome和Safari。之前,大家也提到Webkit过虑器,它不但将图象变为灰色还可以变为褐色和模糊不清实际效果。
加上以下CSS款式能够将图象变为灰色

拷贝编码
编码以下:

img {
-webkit-filter: grayscale(1); /* Webkit */
filter: gray; /* IE6⑼ */
filter: grayscale(1); /* W3C */
}

适用IE6⑼和Webkit访问器(Chrome 18+, Safari 6.0+, and Opera 15+)
(留意:这段编码在Firefox上失效果。)
2、Javascript
第2种方式是根据应用JavaScript技术性上应当适用全部JavaScript的访问器,包含IE6下列

拷贝编码
编码以下:

var imgObj = document.getElementById('js-image');
function gray(imgObj) {
var canvas = document.createElement('canvas');
var canvasContext = canvas.getContext('2d');
var imgW = imgObj.width;
var imgH = imgObj.height;
canvas.width = imgW;
canvas.height = imgH;
canvasContext.drawImage(imgObj, 0, 0);
var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH);
for(var y = 0; y < imgPixels.height; y++){
for(var x = 0; x < imgPixels.width; x++){
var i = (y * 4) * imgPixels.width + x * 4;
var avg = (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);
return canvas.toDataURL();
}
imgObj.src = gray(imgObj);

3、SVG
第3种方式来自SVG Filter.,你必须建立1个SVG文档,并将下列编码写在里边,储存取名为***.svg

拷贝编码
编码以下:

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

随后运用过虑器的特性,大家能够根据SVG文档中的元素的ID联接SVG文档

拷贝编码
编码以下:

img {
filter: url('img/gray.svg#grayscale');
}

你还可以把它放到CSS文档中,比如:

拷贝编码
编码以下:

img {
filter: url('url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'><filter%20id='grayscale'><feColorMatrix%20type='matrix'%20values='0.3333%200.3333%200.3333%200%200%200.3333%200.3333%200.3333%200%200%200.3333%200.3333%200.3333%200%200%200%200%200%201%200'/></filter></svg>#grayscale");')
}

总结
以便能过跨访问器适用灰度值的实际效果,大家能够把上述方式和1起应用下面的编码片断去完成。这段编码将适用Firefox 3.5+, Opera 15+, Safari, Chrome, and IE

拷贝编码
编码以下:

img {
-webkit-filter: grayscale(100%);
-webkit-filter: grayscale(1);
filter: grayscale(100%);
filter: url('../img/gray.svg#grayscale');
filter: gray;
}

大家能够运用上面的编码和JavaScript方式和只出示CSS滤波器做为储备防止JavaScript被禁用。这个念头能够很非常容易地Modernizr的协助下完成的。

拷贝编码
编码以下:

.no-js img {
-webkit-filter: grayscale(100%);
-webkit-filter: grayscale(1);
filter: grayscale(100%);
filter: url('../img/gray.svg#grayscale');
filter: gray;
}

OK了,你的访问器上能够看到很炫的实际效果了!!


在线客服

关闭

客户服务热线
4008-888-888


点击这里给我发消息 在线客服

点击这里给我发消息 在线客服