Toolchain di grafica programmatica
Domanda
Ho disegnato un'icona in Inkscape , ma ora vorrei modificarlo a livello di programmazione (cambiare leggermente i colori per diversi stati delle icone) e convertilo in un file in formato PNG piastrellato contenente più icone con colori diversi. Conosco le opzioni --export-png di Inkscape, ma non riesco a vedere un modo per farlo cambiare l'immagine e / o esportare più volte in diverse parti dell'immagine combinata.
Esistono buoni strumenti orientati all'utente per giocherellare programmaticamente con le immagini, o devo approfondire GD o anche modificare manualmente l'SVG XML?
Soluzione
Anche se non sono sicuro al 100% se soddisfa la tua richiesta di orientamento dell'utente, ti consiglio di dare un'occhiata a www.imagemagick.org . Ho usato con successo il suo "convert" " utilità per la conversione di script da svg a png e anche per l'aggiunta di colori di sfondo personalizzati.
Altri suggerimenti
Uso due semplici set di strumenti per fare questo per un webcomic:
- Script Perl / PHP / Ruby di base per modificare l'SVG XML (esiste anche un'ottima libreria Perl, ma trovo che non sia necessario per le modifiche di base di cui ho bisogno)
- Esegui Inkscape stesso dalla riga di comando per eseguire il rendering di SVG in PNG. Il rendering SVG di Inkscape è di gran lunga il migliore che abbia mai trovato.
Nota: Inkscape può essere installato su un server web con un po 'di lavoro e può essere chiamato da un CGI (perl, php, ecc.), sebbene sia lento (quindi dovresti memorizzare i risultati nella cache).
Chiamandolo dalla riga di comando su una directory di file SVG:
find -name "*svg" -exec inkscape -z --file={} \
--export-png=$OUTPUT{}.png --export-width=640 --vacuum-defs \;
- Trova tutti i file SVG
- Esegue Inkscape per eseguire il rendering di ogni file
- La larghezza è limitata a 640 px
- I file SVG vengono ripuliti (bello da fare prima di accedere a svn / git)
Potresti anche essere interessato a Batik , un motore di rendering SVG scritto in Java. Funziona bene sul lato server ed è abbastanza autonomo.