2016-06-08 24 views
0

我能夠安裝imagemagick的webp支持。但是我錯過了一些精確的命令。 基本覆蓋通:Imagemagick PHP中的特定webp調用

$im = new Imagick(); 
$im->pingImage($src); 
$im->readImage($src); 
$im->resizeImage($width,$height,Imagick::FILTER_CATROM , 1,TRUE); 
$im->setImageFormat("webp"); 
$im->writeImage($dest); 

但我錯過很多的微調選項ImageMagick的命令行文檔在這裏描述: http://www.imagemagick.org/script/webp.php

具體做法是:

如何設置壓縮質量? (我嘗試setImageCompressionQuality,它不工作,即輸出總是相同的大小)

如何設置「方法」(從0到6)?

感謝

編輯:我跟着下面@ emcconville的建議(感謝!),並沒有方法,也沒有壓縮工作。所以我開始懷疑我的imagemagick彙編。 我嘗試使用命令行:

convert photo.jpg -resize 1170x1170\> -quality 50 photo.webp 

Wehn改變,對質量的50個變量產生的文件總是相同的大小。所以,我的imagemagick一定有什麼問題...

+0

我相信編碼器特定的選項可以用[Imagick :: setOption](http://php.net/manual/en/imagick.setoption.php)方法設置。 – emcconville

回答

0

如何設置「方法」(從0到6)?

嘗試......

$im = new Imagick(); 
$im->pingImage($src); 
$im->readImage($src); 
$im->resizeImage($width,$height,Imagick::FILTER_CATROM , 1,TRUE); 
$im->setImageFormat("webp"); 
$im->setOption('webp:method', '6'); 
$im->writeImage($dest); 

如何設置壓縮質量? (我試過setImageCompressionQuality和它不工作,即輸出始終是相同的大小)

Imagick::setImageCompressionQuality似乎爲我工作,但要注意webp:lossless變爲啓用如果值是100,或更大(見source) 。您可以測試切換無損,以查看結果的影響。從評論

$img->setImageFormat('webp'); 
$img->setImageCompressionQuality(50); 
$img->setOption('webp:lossless', 'true'); 

編輯嘗試測試圖像轉換直接與cwebp實用程序WebP的。

cwebp -q 50 photo.jpg -o photo.webp 

這也會寫一些統計信息到標準輸出,它可以幫助調試發生了什麼。

Saving file 'photo.webp' 
File:  photo.jpg 
Dimension: 1170 x 1170 
Output: 4562 bytes Y-U-V-All-PSNR 55.70 99.00 99.00 57.47 dB 
block count: intra4: 91 
       intra16: 5385 (-> 98.34%) 
       skipped block: 5357 (97.83%) 
bytes used: header:    86 (1.9%) 
      mode-partition: 2628 (57.6%) 
Residuals bytes |segment 1|segment 2|segment 3|segment 4| total 
    macroblocks: |  0%|  0%|  0%|  98%| 5476 
     quantizer: |  45 |  45 |  43 |  33 | 
    filter level: |  14 |  63 |  8 |  5 | 

還請記住,對於某些主題,調整壓縮質量並不總是保證文件大小減少。但這些都是極端的邊緣情況。

+0

非常感謝您的詳細解答。我從來沒有在webP的任何地方看到過有關「SetOption」的文檔,所以這是第一個。它仍然不起作用,但現在我認爲這是由於我彙編了Imagemagick ... – Blaise