ImageMagick PHP-扭曲文本并在图像上注释

时间:2018-07-03 09:46:45

标签: php imagemagick imagick

是否可以使用ImageMagick(PHP)使文本变形并在图像上添加注释?还是我必须根据文本创建图像,将其变形然后粘贴到我的基础图像上?

我有一个咖啡杯,想添加文字。我想在文字上加上一点弧度,以使杯子上具有三维外观。

我尝试使用弓形字体:

http://www.imagemagick.org/Usage/fonts/#arch

但是在我的代码示例中,我无法使其正常工作,因为文本为$ draw = new ImagickDraw();。而且我无法扭曲它或使用拱形字体。我总是以扭曲整个图像为最终结果,因为该扭曲仅适用于$ image = new Imagick('original /'.$ id。'。jpg')

任何提示或建议都非常感激。我需要一个带有一些凹形拱形的字体,例如此处的示例:

http://www.imagemagick.org/discourse-server/viewtopic.php?t=13901

我无法在PHP中使用它。

$fontpath = 'fonts/';
$id = $_REQUEST["id"];
$text1 = $_REQUEST['text1'];
$text2 = $_REQUEST['text2'];

$fontname1 = $_REQUEST['fontname1'];
$fontname2 = $_REQUEST['fontname2'];

$x_coordinate1 = $_REQUEST['x_coordinate1'];
$x_coordinate2 = $_REQUEST['x_coordinate2'];

$y_coordinate1 = $_REQUEST['y_coordinate1'];
$y_coordinate2 = $_REQUEST['y_coordinate2'];

$pointsize1 = $_REQUEST['pointsize1'];
$pointsize2 = $_REQUEST['pointsize2'];

$fill1 = $_REQUEST['fill1'];
$fill2 = $_REQUEST['fill2'];

$stroke1 = $_REQUEST['stroke1'];
$stroke2 = $_REQUEST['stroke2'];

/* Create some objects */
//$image = new Imagick();
$draw = new ImagickDraw();

/* New image */
$image = new Imagick('original/'.$id.'.jpg');

/* Text color */
$draw->setFillColor($fill1);

/* Font properties */
$draw->setFont($fontpath.$fontname1);
$draw->setFontSize( $pointsize1 );

/* Create text */
/* Center is important */
$draw->setGravity (Imagick::GRAVITY_CENTER);
$image->annotateImage($draw, $x_coordinate1, $y_coordinate1, 0, $text1);

/* Text2 color */
$draw->setFillColor($fill2);

/* Font2 properties */
$draw->setFont($fontpath.$fontname2);
$draw->setFontSize( $pointsize2 );

$draw->setGravity (Imagick::GRAVITY_CENTER);


$image->annotateImage($draw, $x_coordinate2, $y_coordinate2, 0, $text2);

/* Give image a format */
$image->setImageFormat('jpg');

/* Output the image with headers */
header('Content-type: image/jpg');
echo $image;

1 个答案:

答案 0 :(得分:0)

来自fmw42的评论最能解决我的问题。我将文本创建为具有透明背景的图像,然后变形,最后合成了另一幅图像。