Я использую php 7.0.19 и ImageMagick 6.9.6-4 на сервере FreeBSD 11.0. Я использую imagemagick для нескольких вещей, но я только начинаю использовать его для наложения текста поверх моих изображений. Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я пытаюсь использовать функциональность annotateImage, выдается ошибка, которая просто говорит: «Невозможно аннотировать изображение».
Я просмотрел довольно много вопросов, связанных с annotateImage, здесь на stackoverflow, и я проверил документы, чтобы посмотреть, смогу ли я решить проблему самостоятельно, но я застрял. По другим вопросам annotateImage я видел, что у некоторых людей возникают проблемы из-за отсутствия установленного шрифта, и это тоже может быть моей проблемой, но я попытался поместить файл шрифта (файл ttf) в тот же каталог, что и мой скрипт и я все еще имею ту же проблему.
Выполнение convert -list font
возвращает пустой результат, указывая, что нет никаких шрифтов, к которым у imagemagick есть прямой доступ / доступ по умолчанию; тем не менее, я думал, что, включив файл шрифтов в тот же каталог, что и мой скрипт, я смог бы заставить его работать в любом случае. Возможно, это ошибочное предположение?
Вот код, который я использую для теста:
$imagick = new Imagick('originalImage.jpg');
$draw = new ImagickDraw();
$draw->setFillColor('#ffffff');
$draw->setFont('ARIAL.TTF');
$draw->setFontSize(20);
$imagick->annotateImage($draw, 20, 100, 0, 'The quick fox jumps over the lazy dog');
$imagick->drawImage($draw);
$imagick->writeImage('finalImage.jpg');
Я также пробовал другие примеры сценариев, которые не требуют исходного изображения, и получил ту же ошибку. Например, этот скрипт выдает ту же ошибку:
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );
$image->newImage(800, 75, $pixel);
$draw->setFillColor('black');
$draw->setFont('ARIAL.TTF');
$draw->setFontSize( 30 );
$image->annotateImage($draw, 10, 45, 0,
'The quick brown fox jumps over the lazy dog');
$image->setImageFormat('png');
header('Content-type: image/png');
echo $image;
В этом простом тесте я ожидал добавить «Быстрая лиса перепрыгивает через ленивую собаку» поверх моего изображения, но вместо этого выдается исключение, и в сообщении об ошибке просто говорится: «Невозможно аннотировать изображение».
Любые идеи или предложения о том, как я могу устранить ошибку?
Спасибо!