Сглаживание текста Imagemagick

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

Хотя у imagemagick есть опция сглаживания. но не имеет типа сглаживания, такого как фотошоп.

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


person pragnesh    schedule 04.10.2011    source источник
comment
На какой из множества типов сглаживания текста в Photoshop вы имеете в виду? Что вы сделали до сих пор?   -  person hakre    schedule 05.10.2011
comment
я имею в виду настройку сглаживания, описанную на этой странице tutorialblog.org/photoshop- какая-настройка-сглаживания-наилучшая   -  person pragnesh    schedule 06.10.2011
comment
В вашем примере их несколько. Например, первый вариант должен поддерживаться с помощью imagemagick из коробки, но я предполагаю, что это не тот вариант, который вы ищете (вариант none), так что какие из них вы ищете?   -  person hakre    schedule 06.10.2011
comment
я ищу сильный эффект сглаживания   -  person pragnesh    schedule 07.10.2011


Ответы (1)


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

$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();
person lbutcher    schedule 19.04.2013