colocar texto sobre imagen sin imagemagick

3

Tengo un archivo de imagen png en el que me gustaría superponer texto, a través de la línea de comandos (para usar en un Makefile). El texto a superponer es dinámico, se decide en el momento en que se modifica la imagen.

Soy consciente de que puedo instalar ImageMagick para hacer esto, pero preferiría usar un método que solo requiera OS X estándar junto con las herramientas para desarrolladores de Xcode.

¿Hay algún comando (o secuencia de comandos, incluido AppleScript si es necesario) que pueda usar para que esto suceda? (Si lo hay, un ejemplo sería excelente).

    
pregunta mah 18.11.2013 - 15:52

2 respuestas

4

Puedes intentar usar un lenguaje de scripts que viene instalado con OS X, como PHP o Ruby, y escribir un script de línea de comandos con eso.

Aquí hay un ejemplo usando PHP:

<?php

/*
Usage
php addtext.php input.png "The text"
*/

//  The source image (taken from the command line argument)
$image = imagecreatefrompng($argv[1]);

//  The text (taken from the command line argument)
$text = $argv[2];

//  Red colour
$colour = imagecolorallocate($image, 255, 0, 0);

//  Change font as desired
$font = '/Library/Fonts/Impact.ttf';

//  Add the text
imagettftext($image, 20, 0, 20, 30, $colour, $font, $text);

//  Save the image
imagepng($image, 'out-image.png');

//  Free up memory
imagedestroy($image);

?>

Guarde este script en un archivo llamado algo como addtext.php y luego ejecútelo así ...

php addtext.php image.png "Some text to add"

Este script de ejemplo debe generar una imagen llamada out-image.png con el texto agregado, utilizando la fuente Impact True Type que está instalada con OS X, en el mismo directorio que el script PHP.

Es posible que desee leer la función imagettftext de PHP para jugar con la representación del texto.

Se podría hacer algo similar en Ruby, Python, etc., pero no estoy seguro de los comandos / bibliotecas de creación / creación de imágenes "incorporadas" que vienen instaladas con OS X para esos lenguajes de scripting.

Espero que este sea un buen punto de partida.

    
respondido por el user26787 19.11.2013 - 23:04
0

Estaba intentando hacer lo que pediste usando Applescript y Preview.app, pero la Vista previa no es Applescriptable.

Este es un truco feo, pero puede adaptarse a su propósito, al usar Automator para configurar el siguiente flujo de trabajo:

Si lo guarda como un flujo de trabajo, puede ejecutarlo desde la línea de comandos con el comando automator de esta manera:

for i in 'ls {location of files to be processed}';do 'automator -i $i {location of .workflow}';done
    
respondido por el Deesbek 18.11.2013 - 22:33

Lea otras preguntas en las etiquetas