我在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格式,因为它更有效。
最佳
阿赫桑
答案 0 :(得分:2)
我认为这是由writeImage语句引起的。如果您在不指定png8的情况下编写PNG图像:特别是在文件名中,您的图像将不会以该格式存储。实质上,setImageFormat只会在您将图像检索为字符串时生效(echo $ img)。
如果您执行以下操作:
$img->writeImage ('png8:' . $name . ".png");
它应该存储为png8。您可以使用标识-verbose并检查深度/通道深度来验证这一点。