Я хочу использовать Imagick API для PHP вместо запуска командной строки в моем PHP-коде.
exec("convert -gravity Center -size 200x200 -fill black -font Arial -pointsize 20 pango:\"Hello World!\" output.png");
для приведенной выше команды у меня есть следующий код Imagick API:
<?php
$img = new Imagick();
$draw = new ImagickDraw();
$draw->setFont("Arial");
$draw->setFontSize(20);
$draw->setGravity( Imagick::GRAVITY_CENTER );
$img->newImage( 200, 200, "black", "png" );
//Pango code for Hello World!
$img->writeImage("output.png");
?>
Но я не мог найти равный метод / вариант для Панго. Знаете ли вы, как использовать Pango в Imagick API?
Просто улучшив ответ Aite, добавив цвет фона.
$img = new Imagick();
$img->setBackgroundColor(new ImagickPixel('black'));
$img->setFont("Arial");
$img->setPointSize(20);
$img->setGravity( Imagick::GRAVITY_CENTER );
$img->setImageFormat('jpg');
//Pango code for Hello World!
$img->newPseudoImage(200, 200, "pango:Hello World");
$img->writeImage("output.png");
Часть панго: \ «Привет, мир! \» это имя файла в ImageMagick. Это означает, что вы должны вызвать readImage, чтобы «прочитать» изображение панго:
$img->readImage("pango:\"Hello World!\"");
Это будет работать, только если ImageMagick скомпилирован с поддержкой pango.
Прежде всего, вам не нужен объект ImagickDraw, вам нужно только установить параметры для объекта Imagick, а затем создать / вызвать новое псевдоизображение (с pango:
префикс) вместо обычного нового метода изображения:
$img = new Imagick();
$img->setFont("Arial");
$img->setPointSize(20);
$img->setGravity( Imagick::GRAVITY_CENTER );
$img->setImageFormat('jpg');
//Pango code for Hello World!
$img->newPseudoImage(200, 200, "pango:Hello World");
$img->writeImage("output.png");
извините, что я не смог выяснить, как установить цвет заливки, но это еще одна проблема, которую вы, возможно, знаете, как ее решить.
Постскриптум Вы должны убедиться, что у вас установлен pango, а библиотека imagemagick построена с поддержкой pango (что сделано для вас, поскольку вы можете использовать командную строку).