У меня проблема с получением нормально контур изображения.
Как это сделать с помощью PHP Imagick?
Входное изображение: Волшебник Имагик
Результат: http://i57.tinypic.com/2wg91qx.png
Результат: http://i60.tinypic.com/az9vr5.png
PS:
границы и / или тени не работают для меня хорошо
Есть много способов обрисовать картину. Вот один из них, который делает более или менее то, что вы хотели. Обратите внимание, что изображение мастера требует дополнительной обработки. Первый фон не полностью белый (у него #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);
Наброски немного сложнее, и я бы рекомендовал продолжить чтение о возможностях обмена мгновенными сообщениями http://www.imagemagick.org/Usage/photos/#color-in
Других решений пока нет …