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


Remove whitespace using Imagick and PHP, then save as transparent PNG

我有一张图片,想要删除它周围的所有空白,然后将其保存为透明的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();
?>

我需要做些什么来删除边框上所有白色(和接近白色)的区域?当这一切都完成了,我可以很容易地调整图像的大小,以裁掉所有的透明度吗?

模糊因子需要是一个量子尺度值,不仅对于这个函数,而且对于几乎所有以'fuzz'作为参数的函数。

。你需要把它放大到量子范围。

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

或者如果您使用的是没有该方法的早期版本的Imagick,则改为:

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

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

通过使用整数值(对于没有启用HDRI的Imagick版本),它允许您精确地控制为操作比较的值。

你需要基于像素值的自动裁剪,我认为这会有所帮助:http://www.imagemagick.org/script/command-line-options.php修剪

你可能还喜欢:http://fmwconcepts.com/imagemagick/autotrim/index.php

来源:http://www.imagemagick.org/discourse-server/viewtopic.php?t=10843

相关文章: