利用CSS3編寫灰階濾鏡來製作黑白照片效果的方法介紹

來源:互聯網
上載者:User
這篇文章主要介紹了使用CSS3編寫灰階濾鏡來製作黑白照片效果的方法,CSS3中的filter十分強大,文中還介紹了對IE相容的方法,需要的朋友可以參考下

CSS3 中的濾鏡(filter)功能讓我們輕鬆方便簡單的處理圖片,而不需要使用 PhotoShop 或者使用很多 JavaScript、PHP 代碼。這個屬性已經得到比較新的 Firefox、Safari、Chrome 瀏覽器支援,而且我們可以通過綜合的可替代的技術來類比實現這個效果——甚至是 IE 瀏覽器。

本文中,我們將使用標準測試圖片 Lena Söderberg (譯者註:Lena 這張美女照片,被作為圖片壓縮的標準測試用圖片)作為示範,使用 CSS 將其轉換成黑白圖片。在下面我將講解如何使用 CSS 的這個功能實現調整色調、模糊、亮度、對比和一些其他的效果。:

CSS3 的灰階濾鏡

使用 CSS3 來稀釋一個圖片的顏色,再簡單不過了。我們可以把這個 CSS 語句寫成一個類,這樣遇到想要效果的圖片,直接加上個類就可以了。

img.desaturate { filter: grayscale(100%); }


當然,當前的瀏覽器在使用 CSS3 的時候,要加上他們自己的瀏覽器功能實驗性首碼,所以,我們首先要做的,就是寫上瀏覽器的首碼:

img.desaturate { filter: grayscale(100%);   -webkit-filter: grayscale(100%);   -moz-filter: grayscale(100%);   -ms-filter: grayscale(100%);   -o-filter: grayscale(100%);   }


想要用在某個圖片上很簡單,加上一個類:

<img src=lena-söderberg.png alt="Lena Söderberg" style=width:512px;height:512px class=desaturate>


這就可以了。 ## 增加一個 SVG 的濾鏡效果 這個功能目前只在 Chrome 18+ 有效,其他瀏覽器馬上就會增加支援。為了在 Firefox 4+ 中得到相同的效果,我們可以需要使用 SVG 濾鏡。我把建立了一個單獨的檔案 的 saturate.svg ,代碼如下:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg">   <filter id="greyscale">   <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 00.3333 0.3333 0.3333 0 00.3333 0.3333 0.3333 0 00  0  0  1 0"/>   </filter>   </svg>




不要被這段 SVG 代碼嚇住了——雖然上面的矩陣數列有點複雜。這段代碼我推薦你直接複製粘貼成一個通用的“小檔案”。我會再寫一篇文章詳細介紹一下上面矩陣變化,在這裡不再贅述。 加上上面的 SVG 檔案引用,我們要插入 HTML 頁面的 CSS 代碼如下:

img.desaturate{   filter: grayscale(100%);   -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%);   -ms-filter: grayscale(100%); -o-filter: grayscale(100%);   filter: url(desaturate.svg#greyscale);   }


為 IE 做相容:

到現在我們的代碼可以相容未來的瀏覽器,和最新版的 Chrome 、 Firefox 4+。為了讓 IE 6-9 加入相容列表,我們需要使用微軟的笨拙但是有效 filter 濾鏡:

img.desaturate{   filter: grayscale(100%);   -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%);   -ms-filter: grayscale(100%); -o-filter: grayscale(100%);   filter: url(desaturate.svg#greyscale);   filter: gray;   }


如果你還想做老版本的 Webkit 核心瀏覽器的相容:

img.desaturate{   filter: grayscale(100%);   -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%);   -ms-filter: grayscale(100%); -o-filter: grayscale(100%);   filter: url(desaturate.svg#greyscale);   filter: gray;   -webkit-filter: grayscale(1);   }



如果你想要在所有的瀏覽器中實現這個視覺效果(假設你的訪問者都支援 JavaScript)你可以使用 jQuery 或者 Greyscale.js 來修改你的圖片,使其去色。

上面咱們寫的 CSS 代碼可以讓我們不需要使用 PhotoShop 就可以把圖片變成黑白的。使用 CSS 來實現這個功能,可以非常容易修改:例如,你可以看到當我們把去色程度參數從 100% 變成 50% 的時候圖片會是原色和黑白融合在一起的效果。

其他效果:

此外,黑白照片上還可以添加其他的一些filter的效果有:

-webkit-filter:blur(5px);  //模糊,此處為5像素   -webkit-filter:sepia(0.5);  //疊加褐色,取值範圍0-1,此處表示50%的褐色   -webkit-filter:brightness(0.5);  //亮度,取值範圍0-1,5倍亮度(數字為0時為正常樣式,為1時表示的是100%亮度,無法看到圖片)   -webkit-filter:hue-rotate(30deg); //色相(按照色相環進行旋轉,順時針方向,紅-橙-黃-黃綠-綠-藍綠-藍-藍紫-紫-紫紅-紅)此處為疊加黃色濾鏡   -webkit-filter:invert(1);  //反色,取值範圍0-1,0為原圖,1為徹底反色之後,0.5為灰色   -webkit-filter:saturate(4);  //飽和度,取值範圍0~*,0為無飽和度,1為原圖,值越高飽和度越大   -webkit-filter:contrast(2);  //對比,取值範圍0~*,0為無對比(灰色),1為原圖,值越高對比越大   -webkit-filter:opacity(0.8);  //透明度,取值範圍0~1,0為全透明,1為原圖   -webkit-filter:drop-shadow(17px 17px 20px black); //陰影
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.