讓web網(wǎng)頁圖片變灰色將彩色圖像變成灰度的三種方法分別是怎樣的,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)專注于莒南企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,商城系統(tǒng)網(wǎng)站開發(fā)。莒南網(wǎng)站建設(shè)公司,為莒南等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
我一直喜歡灰度圖像因為我認為他們看起來更有藝術(shù)感。很多圖片編輯如Photoshop很容易把你的彩色圖像變成灰度。甚至有選擇調(diào)整顏色深度和色調(diào)。不幸的是,這樣的效果想做在網(wǎng)絡(luò)上并不容易,因為瀏覽器有差異。
1、CSS Filter
使用CSS過濾器屬性可能是最簡單的方法把圖像變成灰度。以往,IE瀏覽器有一個專有的CSS屬性稱為過濾應(yīng)用自定義效果包括灰度。
現(xiàn)在,過濾器屬性是CSS3規(guī)范的一部分,并支持在一些瀏覽器,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技術(shù)上應(yīng)該支持所有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 = 0; y < imgPixels.height; y++){
for(varx = 0; x < imgPixels.width; x++){
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.,你需要創(chuàng)建一個SVG文件,并將以下代碼寫在里面,保存命名為***.svg
代碼如下:
然后利用過濾器的屬性,我們可以通過SVG文件中的元素的ID連接SVG文件
[code]
img {
filter:url('img/gray.svg#grayscale');
}
你也可以把它放到CSS文件中,例如:
代碼如下:
img {
filter:url('url("data:image/svg+xml;utf8,#grayscale");')
}
總結(jié)
為了能過跨瀏覽器支持灰度的效果,我們可以把上述方法和一起使用下面的代碼片段去實現(xiàn)。這段代碼將支持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的幫助下實現(xiàn)的。
代碼如下:
.no-js img {
-webkit-filter: grayscale(100%);
-webkit-filter: grayscale(1);
filter: grayscale(100%);
filter:url('../img/gray.svg#grayscale');
filter:gray;
}
OK了,你的瀏覽器上可以看到很炫的效果了!
關(guān)于讓web網(wǎng)頁圖片變灰色將彩色圖像變成灰度的三種方法分別是怎樣的問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。