У меня проблема с тонким контуром изображения .
Как это сделать с помощью PHP Imagick?
Входное изображение: мастер Imagick
Результат: http://img.ruphp.com/imagick/2wg91qx.png
Результат: http://img.ruphp.com/imagick/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);
Эскиз немного сложнее, и я рекомендовал бы продолжить чтение возможностей IM. http://www.imagemagick.org/Usage/photos/#color-in