Draw text with custom font using ImageMagick and PHP

僤鯓⒐⒋嵵緔 提交于 2019-11-28 02:04:28

问题


I want to dynamically render text to an image with a custom font, preferably with the option to output directly or save to a file. And to automatically set the image size according to the font/size combination.

I can already do this with GD, but it doesn't handle fonts where characters overlay each other.

So now I'm looking to ImageMagick. I've found an example in the docs that seem to do what I want. Is this possible with php_magick? Especially the part where no image size is defined :) If it is not, can I make command-line magick output the raw image, so I can pass it directly to the client with PHP?

Thanks!


The real question probably is: How do I convert the IM command below to PHP code using php_magick?

convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony

回答1:


You should be able to use the annotateImage function of the Imagick class to duplicate that functionality.

Here's a straight up copy-paste from that documentation:

<?php
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );

/* New image */
$image->newImage(800, 75, $pixel);

/* Black text */
$draw->setFillColor('black');

/* Font properties */
$draw->setFont('Bookman-DemiItalic');
$draw->setFontSize( 30 );

/* Create text */
$image->annotateImage($draw, 10, 45, 0, 
    'The quick brown fox jumps over the lazy dog');

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

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



回答2:


Decided to skip the API and use the command-line interface instead.

convert -background lightblue -fill blue -font Arial -pointsize 72 label:Anthony png:-

This returns the raw PNG data, which we can then output to the browser. Replace png:- with the filename to save to a file instead.

Don't forget to use escapeshellarg if you are using user input as parameters here.



来源:https://stackoverflow.com/questions/6021894/draw-text-with-custom-font-using-imagemagick-and-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!