這篇文章主要介紹了使用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 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 程式碼嚇住了——雖然上面的矩陣數列有點複雜。這段程式碼我推薦你直接複製貼上成一個通用的「小檔案」。我會再寫一篇文章詳細介紹上面矩陣變化,在這裡不再贅述。加上上面的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 做相容:
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; }
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); }
其他效果:
此外,在黑白照片上還可以加入其他的一些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); //阴影
#
以上是使用CSS3編寫灰階濾鏡來製作黑白照片效果的詳細內容。更多資訊請關注PHP中文網其他相關文章!