Imagick: не удалось запросить метрику шрифта - PullRequest
0 голосов
/ 28 июля 2011

Я работаю над (что должно быть) простым сценарием, который добавит текст к изображению. Пройдя несколько раз по сценарию в поисках ошибок, я, наконец, решил попробовать запустить пример с php.net и столкнулся с той же неописуемой ошибкой: «Не удалось запросить метрику шрифта». Вот код:

/* Text to write */
$text = "Hello World!";

/* Create Imagick objects */
$image = new Imagick();
$draw = new ImagickDraw();
$color = new ImagickPixel('#000000');
$background = new ImagickPixel('none'); // Transparent

/* Font properties */
$draw->setFont('Arial');
$draw->setFontSize(50);
$draw->setFillColor($color);
$draw->setStrokeAntialias(true);
$draw->setTextAntialias(true);

/* Get font metrics */
$metrics = $image->queryFontMetrics($draw, $text);

/* Create text */
$draw->annotation(0, $metrics['ascender'], $text);

/* Create image */
$image->newImage($metrics['textWidth'], $metrics['textHeight'], $background);
$image->setImageFormat('png');
$image->drawImage($draw);

/* Save image */
file_put_contents('/tmp/file.png', $image);

Не могу за всю жизнь найти какую-либо информацию через гугл об этой ошибке. Также я не могу найти адекватную документацию по этому методу или потенциальным причинам отказа. По сути, я в тупике. Если бы кто-нибудь мог предоставить понимание или исправить это, мы будем очень признательны.

Версия ImageMagic: ImageMagick 6.6.5-10 2011-04-06 Q16

Версия модуля Imagick: 3.1.0b1

Ответы [ 2 ]

1 голос
/ 29 июля 2011

вы пробовали cli версию? imagemagick установлен на сервере? Если да затем выполните команду типа

system('convert -background lightblue -fill blue \
      -font Candice -pointsize 72 label:Anthony \
      label.gif  ');

проверьте, не было ли у вас имени сервера label.gif после запуска скрипта. для справки http://www.imagemagick.org/Usage/text/

0 голосов
/ 01 августа 2011

Для тех, у кого есть подобные проблемы, исключения PHP Imagick не всегда являются наглядными. Я мог бы сэкономить много времени, предварительно изучив вывод приложения Image Magic, установленного на сервере. Просто что-то иметь в виду. Чтобы просмотреть список установленных на данный момент делегатов (модулей), используйте команду convert -list configure и проверьте строку, которая начинается с «DELEGATES» из выходных данных. Если вы столкнулись с той же ошибкой, я рекомендую сначала проверить здесь. Я обнаружил, что мне не хватает делегатов freetype и ghostscript. После установки зависимостей и быстрой перекомпиляции ImageMagick все работает как шарм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...