2013-12-22 74 views
1

我有以下代碼在PHP中採取PDF的第一頁的屏幕截圖。php imagick不會保存PNG壓縮,但顯示在瀏覽器中壓縮

$name = getcwd()."\\testfile"; 
    $img = new imagick(); 
    $img->setResolution(200,200); 
    $img->readImage($name.'.pdf[0]'); 
    $img->setImageResolution(100,100); 
    $img->resampleImage(100,100,imagick::FILTER_LANCZOS,1); 
    $img->setImageCompression(\Imagick::COMPRESSION_ZIP); 
    $img->setImageCompressionQuality('0'); 
    $img->setImageFormat('png8'); 
    $img->writeImage($name.".png"); 
    header("Content-type : image/png"); 
    echo $img; 

此代碼僅在Google Chrome的資源監視器選項卡中生成62kb的PNG。但Imagick()寫的圖像大於114kb。只是爲了確保圖像沒有被壓縮,或者我使用了一個稱爲TinyPNG的在線服務,並且他們將圖像縮小到正確的62kb,我在瀏覽器中獲得了其他任何問題...

這段代碼有什麼問題?另外我使用PNG8格式,因爲那樣效率更高。

最佳

阿赫桑

+0

http://stackoverflow.com/questions/7462827/phpimagick-png-compression –

回答

2

我認爲這是由於您的writeImage說法引起。如果您在未指定png8的情況下編寫PNG圖像:特別是在文件名中,圖像將不會以該格式存儲。實質上,setImageFormat只會在您將圖像作爲字符串(echo $ img)檢索時影響。

如果你做到以下幾點:

$img->writeImage ('png8:' . $name . ".png"); 

它應該被存儲爲PNG8。您可以通過標識-verbose並檢查深度/通道深度來驗證。

+0

嗯...有點工作得很好......我想這是迄今爲止最好的解決方案。不知道! – Ahsan