Dibuja texto con fuente personalizada usando ImageMagick y PHP

Quiero representar dinámicamente texto en una imagen con una fuente personalizada, preferiblemente con la opción de salida directamente or guardar en un archivo. Y para establecer automáticamente el tamaño de la imagen de acuerdo con la combinación de fuente / tamaño.

Ya puedo hacer esto con GD, pero no maneja fuentes donde los caracteres se superponen entre sí.

Así que ahora estoy buscando ImageMagick. He encontrado un ejemplo en los documentos que parecen hacer lo que quiero. ¿Es esto posible con php_magick? Especialmente la parte donde no se define el tamaño de la imagen :) Si no lo está, ¿puedo hacer que la línea de comandos muestre la imagen sin procesar para poder pasarla directamente al cliente con PHP?

¡Gracias!


La verdadera pregunta probablemente sea: ¿Cómo convierto el comando de mensajería instantánea a continuación a código PHP usando php_magick?

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

preguntado el 16 de mayo de 11 a las 18:05

Descubrí cómo hacer que devuelva los datos de la imagen sin procesar: convert [..] png:- -

2 Respuestas

Debería poder utilizar el annotateImage función de la Imagick class para duplicar esa funcionalidad.

Aquí hay un copiar y pegar directamente de esa documentación:

<?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;

contestado el 16 de mayo de 11 a las 23:05

Gracias por tu respuesta, pero ¿no establece eso el tamaño de la imagen en 800x75? Necesito que el tamaño se ajuste automáticamente al tamaño de la fuente - Znarkus

¿Cómo puedo usar una fuente ttf personalizada? - c0dehunter

Decidió omitir la API y utilizar la interfaz de línea de comandos en su lugar.

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

Esto devuelve los datos PNG sin procesar, que luego podemos enviar al navegador. Reemplazar png:- con el nombre del archivo para guardarlo en un archivo.

No olvides usar escapeshellarg si está utilizando la entrada del usuario como parámetros aquí.

Respondido 20 Feb 12, 13:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.