簡體   English   中英

php imagick不會保存壓縮的PNG但在瀏覽器中顯示壓縮

[英]php imagick won't save PNG compressed but shows compressed in browser

我在 PHP 中有以下代碼來截取 PDF 第一頁的屏幕截圖。

    $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 格式,因為那更有效。

最好的

阿山

我認為這是由您的 writeImage 語句引起的。 如果您編寫 PNG 圖像而不指定 png8: 特別是在文件名中,您的圖像將不會以該格式存儲。 本質上,setImageFormat 只會影響您將圖像作為字符串檢索(echo $img)。

如果您執行以下操作:

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

它應該存儲為 png8。 您可以使用 identify -verbose 並檢查深度/通道深度來驗證這一點。

這些是用於以下常見圖像格式的默認壓縮方法:

PNG:  Imagick::COMPRESSION_ZIP
JPEG: Imagick::COMPRESSION_JPEG
GIF:  Imagick::COMPRESSION_LZW

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM