Ich habe einen Ordner (original_svg_files) mit mehr als zehntausend .svg-Dateien in verschiedenen Größen und ich muss die Größe jeder einzelnen ändern. Der Name sollte mit der ursprünglichen .svg-Datei identisch sein und die längste Seite sollte 150 Pixel groß sein, und ich muss auch das Seitenverhältnis beibehalten (die Proportionen einschränken).
Ich habe versucht, Adobe Illustrator dazu zu verwenden, kann aber nicht herausfinden, wie, da es nur die Transformation über einen Prozentsatz unterstützt. Ich muss diesen Prozess über die Befehlszeile oder Automator automatisieren, da das, was ich jetzt tue, wirklich zeitaufwändig ist!
Ich verwende OS X El Capitan Version 10.11.1.
Irgendwelche Vorschläge?
Sieht so aus, als würde die Option -fit in diesem Befehlszeilendienstprogramm genau das tun, was Sie wollen:
https://github.com/vieron/svg-resizer
Wenn Sie Hilfe beim Brauen benötigen, schauen Sie hier: http://coolestguidesontheplanet.com/installing-homebrew-os-x-yosemite-10-10-package-manager-unix-apps/
Wenn Sie mit der Befehlszeile nicht vertraut sind, lassen Sie sich davon nicht einschüchtern - es ist wirklich nicht so schwer. Posten Sie zurück, wenn Sie nicht weiterkommen oder etwas einfach keinen Sinn ergibt.
Ich bin mir ziemlich sicher, dass Sie ImageMagick verwenden können, um das zu tun, was Sie brauchen. Es gibt ein Homebrew-Paket für Imagemagick (Homebrew ist das Mac-Äquivalent von apt-get). Also nach kurzer Zeit:
brew install imagemagick
Sie sollten in der Lage sein, die Befehlszeilenprogramme dafür zu verwenden. Sieht so aus, als ob der Konvertierungsbefehl die Größenänderung mit der gewünschten proportionalen Skalierung durchführen sollte.
convert oldimage.svg -resize "150>" oldimage.svg
Dieser Befehl besagt, dass das Bild so verkleinert werden soll, dass die längste Seite 150 ist. Der Rest besteht nur darin, Standard-Shell-Skripte zu verwenden, um den gewünschten Effekt zu erzielen.
Keine Ahnung, ob dies auch für die Mac-Shell funktioniert, aber ich habe das folgende Bash-Skript basierend auf den Informationen im Inkscape-Forum geschrieben :
Grundsätzlich nimmt es alle SVG-Dateien und sucht nach den Viewbox-Attributen des SVG, fügt Breite und Höhe und einen Gruppenwrapper hinzu, um die Größe der ursprünglichen Elemente zu ändern/zu verkleinern.
#!/bin/bash
for folder in $(ls -d [A-Z]*);
do
echo "$folder";
mkdir -p resized/$folder;
for svgfile in $(ls $folder/*);
do
echo "$svgfile";
cat "$svgfile" | \
sed 's/viewBox="0 0 161.9 162" enable-background="new 0 0 161.9 162" xml:space="preserve">/width="41px" height="41px" viewBox="0 0 41 41" enable-background="new 0 0 41 41" xml:space="preserve">\n<g transform="scale(0.25)">/g' | \
sed 's/<\/svg>/<\/g>\n<\/svg>/g' \
> resized/$svgfile;
done;
done
YMMV, abhängig davon, ob Ihre SVG-Dateien alle dieselbe ursprüngliche Viewbox verwenden, meine hat es getan.
$(ls $folder/*)
(was bricht, wenn einige Dateinamen Leerzeichen enthalten) anstelle von $folder/*
?
poshaughnessy
Hallo Katzenfutter