posiziona il testo sull'immagine senza imagemagick

3

Ho un file immagine png su cui vorrei sovrapporre il testo, tramite la riga di comando (da usare in un Makefile). Il testo da sovrapporre è dinamico, deciso al momento della modifica dell'immagine.

Sono consapevole che posso installare ImageMagick per farlo, ma preferirei usare un metodo che richiede solo OS X standard insieme agli strumenti di sviluppo di Xcode.

Esiste un comando (o una sequenza di comandi, incluso AppleScript se necessario) che posso usare per farlo accadere? (Se c'è, un esempio sarebbe eccellente.)

    
posta mah 18.11.2013 - 15:52
fonte

2 risposte

4

Potresti provare a usare un linguaggio di scripting che viene installato con OS X, come PHP o Ruby, e scrivere uno script da riga di comando usando quello.

Ecco un esempio di 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);

?>

Salva questo script in un file chiamato qualcosa di simile ad addtext.php e poi eseguilo in questo modo ...

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

Questo script di esempio dovrebbe generare un'immagine chiamata out-image.png con il testo aggiunto, usando il font Impact True Type installato con OS X, nella stessa directory dello script PHP.

Potresti leggere la funzione imagettftext di PHP per giocare con il rendering del testo.

Qualcosa di simile potrebbe essere fatto in Ruby, Python, ecc. ma non sono sicuro dei "built-in" comandi / librerie / librerie di creazione immagine che vengono installati con OS X per quei linguaggi di scripting.

Spero che questo sia un buon punto di partenza.

    
risposta data 19.11.2013 - 23:04
fonte
0

Stavo provando a fare ciò che mi hai richiesto usando Applescript e Preview.app ma l'anteprima non è applescript.

Questo è un brutto trucco, ma potrebbe essere adatto al tuo scopo, utilizzando Automator impostare il seguente flusso di lavoro:

Se lo salvi come flusso di lavoro, puoi eseguirlo dalla riga di comando con il comando automator in questo modo:

for i in 'ls {location of files to be processed}';do 'automator -i $i {location of .workflow}';done
    
risposta data 18.11.2013 - 22:33
fonte

Leggi altre domande sui tag