我有一个问题就是获得精细的图像轮廓。
如何使用PHP Imagick做到这一点?
输入图片: Imagick向导
结果:http://i57.tinypic.com/2wg91qx.png
结果:http://i60.tinypic.com/az9vr5.png
PS: 边框和/或阴影并没有“对我有用”
答案 0 :(得分:2)
有很多方法可以勾勒出一幅画面。这是其中一个或多或少地做你想要的东西。请注意,向导的图片需要一些额外的处理。第一个背景不是完全白色(它有一些#FEFEFE或类似的像素)。更令人不安的是桌子的上半部分充满了纯白色。因此,您可以在模糊后使用白色像素作为背景(我的方式),或尝试使用matteFloodfillImage()
从角落填充填充。然而,这可能会使桌腿之间的空间不透明。
function drawImage(Imagick $i)
{
$i->setImageFormat("png");
header("Content-Type: image/" . $i->getImageFormat());
echo $i;
exit;
}
$o = new Imagick('wizard.png');
$o->setImageBackgroundColor('white'); // handle tranparent images
$o = $o->flattenImages(); // flatten after setting background
$o->blurImage(5, 30);
$o->whiteThresholdImage( "#F8F8F8" );
$o->blackThresholdImage( "#FFFFFF" );
$o->edgeImage(5);
$o->negateImage(false);
$o->paintTransparentImage($o->getImagePixelColor(0, 0), 0, 2000);
$o->colorizeImage("red", 1);
drawImage($o);
草绘有点复杂,我建议您进一步阅读IM功能http://www.imagemagick.org/Usage/photos/#color-in