2015-05-18 1 views
1

Я хочу использовать API Imagick для PHP вместо командной строки runnung в моем PHP-коде.Использование Pango в PHP Imagick API

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 в API Imagick?

ответ

0

Часть pango: \ "Hello World! \" - это «имя файла» в ImageMagick. Это означает, что вы должны назвать readImage «читать» в PanGo изображения:

$img->readImage("pango:\"Hello World!\""); 

Это будет работать только если ImageMagick скомпилирован с поддержкой Панго.

0

Прежде всего, вам не нужен объект 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"); 

жаль, что я не смог узнать, как установить цвет заливки, но это еще одна проблема, которую вы, возможно, знаете, как ее решить.

P.S. Вы должны убедиться, что у вас установлено pango, а библиотека imagemagick построена с поддержкой pango (что сделано для вас, поскольку вы можете использовать командную строку).

1

Просто улучшите ответ Айт, добавив цвет фона.

$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"); 
Смежные вопросы