使用Imagick和PHP删除空格,然后另存为透明PNG

时间:2015-05-19 12:28:22

标签: php imagick

我有一张图片,想要删除周围的所有空格,然后将其保存为透明的PNG。我在PHP中使用Imagick这样做,但我的脚本似乎无法正常运行。

<?php
$im = new Imagick("http://images.icecat.biz/img/norm/high/14688888-2862.jpg");

$im->borderImage("#ffffff", 20, 20);
$im->trimImage(0.3);

$im->setImagePage($im->getImageWidth(), $im->getImageHeight(), 0, 0);
$im->setImageFormat("png");

header("Content-Type: image/" . $im->getImageFormat());
echo $im->getImageBlob();
?>

如何删除边框处的所有白色(和接近白色)区域?完成后,我可以轻松调整图像大小以裁剪所有透明度吗?

2 个答案:

答案 0 :(得分:1)

模糊因子需要是一个量子比例值,不仅仅是这个功能,而是几乎所有采用“模糊”功能的功能。作为参数。

即。你需要将它扩展到量子范围。

$im->trimImage(0.3 * \Imagick::getQuantum());

或者,如果您使用的是没有该方法的早期版本的Imagick,那么请执行以下操作:

$range = $image->getQuantumRange();
$image->trimImage(0.3 * $range['quantumRangeLong']);

这样做的原因是允许精确控制像素匹配。如果该值作为0-1范围内的浮点值传入,则无法精确控制用于匹配的值。

通过使用整数值(对于未启用HDRI的Imagick版本),它允许您精确控制与操作进行比较的值。

答案 1 :(得分:-1)