在現代網站和應用中,復古風格的濾鏡效果常常用來給圖片帶來獨特的氛圍與情感。 PHP 提供了豐富的圖像處理庫,其中imageconvolution函數就是一個非常強大的工具,它能夠對圖像應用卷積濾鏡,從而實現各種特殊的效果。今天,我們就來分享如何利用imageconvolution函數來製作復古濾鏡效果。
卷積濾鏡是一種圖像處理技術,通過將一個濾鏡矩陣(或稱卷積核)應用於圖像的每個像素,從而改變圖像的顏色和亮度。每個像素的輸出值取決於它周圍像素的加權平均,權重由濾鏡矩陣的值決定。通過使用不同的濾鏡矩陣,可以實現銳化、模糊、邊緣檢測等效果,而復古濾鏡就是通過特定的矩陣,讓圖像呈現出一種懷舊的、溫暖的風格。
在PHP 中, imageconvolution是一個用於執行卷積操作的函數。它的基本用法如下:
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">imageconvolution</span></span><span> ( resource </span><span><span class="hljs-variable">$image</span></span><span> , </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$matrix</span></span><span> , </span><span><span class="hljs-keyword">float</span></span><span> </span><span><span class="hljs-variable">$divisor</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> )
</span></span>
$image :需要處理的圖像資源。
$matrix :卷積核,即二維數組,定義了每個像素的加權係數。
$divisor :用來歸一化矩陣的數值,通常為矩陣值的總和。
$offset :在卷積計算結果中加上的偏移量,用於調整亮度。
加載圖像<br> 首先,我們需要加載一張圖片,以便對其應用濾鏡可以通過imagecreatefromjpeg() 、 imagecreatefrompng()等函數加載不同格式的圖片。
定義復古濾鏡矩陣<br> 復古濾鏡的關鍵在於使用適當的捲積核以下是一個簡單的複古風格的濾鏡矩陣,可以使圖像的色調稍微偏暖,增強一些黃、紅色的成分:
<span><span><span class="hljs-variable">$matrix</span></span><span> = [
[</span><span><span class="hljs-number">0.1</span></span><span>, </span><span><span class="hljs-number">0.2</span></span><span>, </span><span><span class="hljs-number">0.1</span></span><span>],
[</span><span><span class="hljs-number">0.2</span></span><span>, </span><span><span class="hljs-number">1.0</span></span><span>, </span><span><span class="hljs-number">0.2</span></span><span>],
[</span><span><span class="hljs-number">0.1</span></span><span>, </span><span><span class="hljs-number">0.2</span></span><span>, </span><span><span class="hljs-number">0.1</span></span><span>]
];
</span></span>
這個矩陣的作用是對圖像的顏色進行微妙的增強和調整,給圖像帶來一種柔和的複古效果。
應用卷積操作<br> 使用imageconvolution函數來對圖像應用上述矩陣為了實現復古效果,我們設置合適的divisor和offset值。
<span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-string">'your-image.jpg'</span></span><span>); </span><span><span class="hljs-comment">// 加載圖片</span></span><span>
</span><span><span class="hljs-variable">$divisor</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>; </span><span><span class="hljs-comment">// 不進行歸一化</span></span><span>
</span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-comment">// 沒有亮度偏移</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imageconvolution</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$matrix</span></span><span>, </span><span><span class="hljs-variable">$divisor</span></span><span>, </span><span><span class="hljs-variable">$offset</span></span><span>); </span><span><span class="hljs-comment">// 應用卷積濾鏡</span></span><span>
</span></span>
保存或輸出圖像<br> 處理完成後,可以使用imagejpeg( ) 、 imagepng()等函數將處理後的圖像保存為文件,或者直接將其輸出到瀏覽器
<span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/jpeg'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>); </span><span><span class="hljs-comment">// 輸出處理後的圖像</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>); </span><span><span class="hljs-comment">// 銷毀圖像資源,釋放內存</span></span><span>
</span></span>
調節色調和飽和度<br> 為了讓復古效果更加明顯,除了卷積操作,你還可以使用其他圖像處理技術,如調節色調、飽和度或對比度通過這些調整,圖像的複古風格會更加突出。
增加噪聲效果<br> 復古風格的圖像常常伴隨著一些噪點,這些噪聲使得圖像看起來更具年代感可以通過簡單的隨機噪聲函數來模擬這些效果。
結合濾鏡和模糊效果<br> 復古濾鏡可以與模糊效果結合使用,進一步模擬老照片的感覺例如,使用imagefilter()函數結合高斯模糊濾鏡,可以增加圖像的柔和感。
<span><span><span class="hljs-title function_ invoke__">imagefilter</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, IMG_FILTER_GAUSSIAN_BLUR); </span><span><span class="hljs-comment">// 高斯模糊</span></span><span>
</span></span>
使用漸變色背景<br> 如果你的複古濾鏡應用在一張有背景的圖像上,可以嘗試在背景上添加漸變色效果,進一步增強懷舊的氛圍
復古色彩矩陣<br> 還可以通過調整RGB 分量的權重來改變顏色偏向,例如增加紅色和綠色的權重,減少藍色,從而營造出複古的黃色調或紅色調
使用PHP 的imageconvolution函數製作復古濾鏡效果,不僅能夠提供一種簡單有效的方式來改變圖像的外觀,還可以通過調整捲積核和其他圖像處理技巧來實現更加豐富的複古效果。通過靈活運用這些技巧,你能夠為你的網頁或應用添加更具藝術感的圖像處理效果,為用戶帶來更具懷舊感的視覺體驗。