[英]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.