Текст смазывания изображения - PullRequest
1 голос
/ 04 октября 2011

Photoshop имеет сильный текстовый эффект сглаживания.

Хотя в imagemagick есть опция сглаживания.но разве нет такого типа сглаживания, как у photoshop.

есть ли способ получить такой же сильный текстовый эффект сглаживания с помощью imagemagick?

1 Ответ

0 голосов
/ 19 апреля 2013

Это не идеальное решение (я просто изучаю это сам), но оно поможет вам приблизиться: вы можете напечатать текст больше и добавить штрих любого размера, который вы выберете, а затем уменьшить его. Пример кода:

$template_file= "blank.png"; // a transparent png
$template_blob = file_get_contents($template_file);
$width = 100;
$height = 50;
$mult = 6;
$template = new imagick();
$template->readImageBlob($template_blob);
$template->setImageDepth(8);
$template->setCompressionQuality(100); 
$template->setCompression(Imagick::COMPRESSION_NO);
$template->setImageFormat("png");


$points = array( 
   $mult, //scale by which you enlarge it
   0 //# rotate
);

$template->distortImage( imagick::DISTORTION_SCALEROTATETRANSLATE, $points, TRUE ); 

$color = '#000000';

$draw = new ImagickDraw();
$pixel = new ImagickPixel('none');
$draw->setFont('Arial.ttf');
$draw->setFontSize($font_size*$mult);
$draw->setFillColor($color);
$draw->setStrokeColor($color);
$draw->setStrokeWidth(1);
$draw->setStrokeAntialias(true);
$draw->setTextAntialias(true);
$draw->settextkerning($mult); // adjust the kerning if you like

$template->annotateImage($draw, $x_indent, $y_indent, $some_angle, $text);

$points = array( 
   1/$mult, // set it back to the original scale
    0 // rotate
);

$template->distortImage( imagick::DISTORTION_SCALEROTATETRANSLATE, $points, TRUE ); 

 //Do something with the $template here like:
 $template->writeImage("test.png");

$template->clear();
$template->destroy();
$draw->clear();
$draw->destroy();
...