2013-01-20 97 views
4

我一直在尋找PHP代碼來應用高斯模糊圖像。如何在PHP中實現模糊效果?

我所做的是這樣的:

<?php 
$image = imagecreatefromjpeg('new.jpg'); 
imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR); 
imagejpeg($image, 'blur.jpeg'); 
imagedestroy($image); 
?> 

但是效果非常弱,如果我重複模糊效果,它需要一個很長的時間來處理和最終的結果仍然不那麼好。

我也用過Timthumb,我一直很喜歡它的簡單性,但是它會默認裁剪圖像,其模糊效果非常弱。

+1

試試這裏的答案:http://stackoverflow.com/questions/7245710/php-gd-better-gaussian-blur –

+0

命令行或PHP模塊_ImageMagick_可以做到這一點 - 任何體面的算法應該能夠採取模糊值。你有沒有搜索這個,如果是的話,它會變成什麼樣子? – halfer

+0

@ErikNedwidek,因爲我想將模糊值連接到一個滑塊,因此用戶可以輕鬆地更改模糊效果,因此進行此計算時感覺有點複雜。 此外它需要相同的策略..重複代碼以獲得更強效果 –

回答

8

您可以使用ImageMagic

原始圖像

enter image description here

運行通過exec

convert a.png -blur 0x3 a_blur.png 

Output

或運行

convert a.png -blur 0x8 a_blur.png 

enter image description here

+1

哇!效果看起來很棒!經過一番搜索之後,我發現它也是一個WordPress插件!我想我會仔細看看它..謝謝 –

+0

不客氣 – Baba

6

很可能還沒有ImageMagic LIB;

header('Content-Type: image/png'); 

$blurs = 10; 
$image = imagecreatefrompng('blur.png'); 
for ($i = 0; $i < $blurs; $i++) { 
    imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR); 
} 
imagepng($image, 'blur10.png'); 
imagedestroy($image); 

應用了10次模糊後;

enter image description here

+0

謝謝你,但這種方法需要花費更長的時間來完成,並且將模糊值提高到更高的程度會使它變形,而不像Baba的第三個模糊例。 –

+0

@kerem:我用你的代碼,它工作很好..但我無法將其保存在圖像folder.could你PLZ提供代碼來保存生成的模糊代碼? – bittu

+0

得到了解決我的查詢。我用imagepng(「圖像名稱」,「目標」);保存圖像。 – bittu

0

圖像優化是非常重的過程,以便個人,如果我有這幾樣在PHP任務的話,我使用名爲PhpThumb這個PHP圖片庫它無需任何代碼創建的模糊圖像,你只需要調用它的腳本通過網址,並提供參數根據其文檔檢查它是demo