User talk:Mrmw/SvgVereinzelung
Anfrage
[edit]@JoKalliauer and Sarang: hallo, ich bin nach längerer zeit wieder motiviert für svgs in commons aktiv zu werden
zur zeit versuche ich mich an folgendem vorhaben: kategorien wie Category:SVG coat of arms elements - fish zu füllen - d.h. für diesen fall aus allen svgs in der übergordneten kategorie Category:Fish in heraldry die fischelemente extrahieren und svg-optimiert zu vereinzeln und die genannte kategorie zu übertragen.
ein ähnlicher erstversuch war File:SVG Fish Symbols.svg - dies ist jedoch nur eine collage und hat wenig mehrwert
beim jetzigen vorhaben, werden elemente einzeln herausgelöst und somit übersichtlicher und praktischer zur verfügung gestellt - aus ca. 1.800 dateien habe ich ca. 390 unterschiedliche fisch-svgs extrahiert - diese liegen nun genau wie in der beispielcollage alle in einer datei vor
zur eigentlichen frage: mir fehlt eine gute idee diese svg-fische mit vertretbarem aufwand zu vereinzeln
per hand in inkscape ist das kein problem für sagen wir mal 20 einzel-svgs - aber nicht für serienproduktion
ich bin in der lage per scripte rudimentär textbearbeitung zu betreiben, zum teil mit regulären ausdrücken
xml-bäume und die elemente bearbeite ich derzeit noch nicht
ich denke die anforderung würde ich so formulieren: alle gruppierungen auf oberster ebene als einzeldatei abspeichern, dabei die abmessung auf die jeweilige gruppe zuschneiden (zentriert + jeweils 10px rand, aufgerundet auf den nächsten zehner) und gespeichert mit scour um die nicht benötigten defs der anderen elemente zu entfernen
habt ihr dazu gedanken, ideen oder sogar lösungen, ansprechpartner? danke und gruß --Mrmw (talk) 13:20, 17 November 2021 (UTC)
- alle gruppierungen auf oberster ebene als einzeldatei abspeichern
- ->skript selbst schreiben, aber ich bezweifle dass bei allemeinen SVGs die einzelnen Elemente in jeweils Gruppierungen auf oberster Ebene sind.
- dabei die abmessung auf die jeweilige gruppe zuschneiden
- gespeichert mit scour um die nicht benötigten defs der anderen elemente zu entfernen
- alle gruppierungen auf oberster ebene als einzeldatei abspeichern
- — Johannes Kalliauer - Talk | Contributions 14:07, 17 November 2021 (UTC)
- ok danke für deine antwort - allerdings habe ich einige fragen - weil ich mich zwar gut mit inkscape auskenne aber weniger mit der den kommandozeilenbefehle dazu
- wenn ich deinem link folge komme ich auf die 'ResizeByInkscape.sh' in deinem eigenen repository 'cleanupSVG', richtig?
- ich bin im vokabular nicht sicher, also verzeih mir bitte unsinnige fragen
- ist die sh-datei powershell (win) oder bash (linux)?
- ich habe auf https://inkscape.org/de/doc/inkscape-man-1.1.x.html den befehl 'actions' nachgeschlagen und mir per cmd in win mit '--action-list' die verfügbaren verben auflisten lassen - keine dieser verben 'DialogDocumentProperties;FitCanvasToDrawing;FileSave;FileClose;FileQuit' ist in der liste enthalten - deswegen die frage, woher kennst du sie und sind sie wo dokumentiert?
- du hast in diesem repository ein großes sammelsurium an scripten, von denen sich viele offensichtlich mit der bereinigung von svgs befassen - hast du die alle selbst geschrieben? was rätst du mir wenn ich mich von ihnen inspirieren lasse?
- das repository 'convert' ist das gleiche wie auf https://svgworkaroundbot.toolforge.org/ ? ist das in deinem github verlinkt oder geklont?
- 'python3 -m scour.scour -i "${file}"' wer ruft hier wen oder was an welchem ort auf? ist scour ein python-kommando oder -bibliothek? oder wird physikalisch eine datei ausgeführt, wenn ja wo liegt diese?
- danke für die mühen - mühsam ernährt sich auch mein eichhörnchen --Mrmw (talk) 19:04, 17 November 2021 (UTC)
- ich bin im vokabular nicht sicher, also verzeih mir bitte unsinnige fragen
- Ich verwende dienstlich&privat Fedora (Linux), daher habe vergesse ich mein altes Windows-Wissen recht schnell.
- Ein Powershell#Skript verwendet normalerweise eine *.ps1-extension, daher sind meine *.sh "Bourne-again shell"-Dateien
- Die Win-Powershell unterstützt viele Linux-bash-befehle, insofern werden viele commands in der Powershell funktionieren aber vermutlich nicht alle.
- Ich empfehle WSL auf Windows zu verwenden, das braucht zwar viel Platz aber dafür hast du ein ganzes Linux auf deinem Rechner.
- Eine Liste von allen Inkscape-Befehlen findest du z.B. auf https://github.com/JoKalliauer/cleanupSVG/blob/master/_Inkscapecomands1.txt
- https://github.com/JoKalliauer/cleanupSVG hat sehr viele Skripte, sag mir was du machen willst und ich sag dir welches du brauchst
- https://github.com/JoKalliauer/cleanupSVG/blob/master/svg2validsvg.sh behebt viele Librsvg-Bugs, das ist von mir und sollte Fehlerfrei sein.
- scour: https://github.com/JoKalliauer/cleanupSVG/blob/master/minscour4compression.sh hält sich an die Empfehlung auf Help:SVG_guidelines#scour, hingegen https://github.com/JoKalliauer/cleanupSVG/blob/master/ScourFull.sh optimiert aggressiv
- svgcleaner: https://github.com/JoKalliauer/cleanupSVG/blob/master/mincleaner4compression.sh hält sich an die Empfehlung auf Help:SVG_guidelines#svgcleaner, hingegen https://github.com/JoKalliauer/cleanupSVG/blob/master/CleanerFull.sh optimiert aggressiv
- svgo: https://github.com/JoKalliauer/cleanupSVG/blob/master/O2.sh
- µsvg: https://github.com/JoKalliauer/cleanupSVG/blob/master/usvgFull.sh
- Spezialskripte: Ungrupieren (Inkscape), Gruppieren(scour,svgcleaner), Schriftartenersetzung, Spezielle Librsvg-bugs,...
- https://github.com/JoKalliauer/convert wird auf https://svgworkaroundbot.toolforge.org/ geklont (hier sind nur die wichtigsten SVG-Skripte drinnen)
- 'python3 -m scour.scour -i "${file}"' Python ruft scour auf und scour bekommt das ${file} als input, normalerweise schreibt man es so 'scour -i "${file}"', nur das hat auf svgworkaroundbot.toolforge.org nicht funktioniert daher habe ich den Befehl ersetzt. ${file} ist entweder als relativer Pfad oder als absoluter Pfad anzugeben. Meine Skripte arbeiten ausschließlich im aktuellen Ordner und verwenden relative Pfade (also nur den Dateinamen).
- — Johannes Kalliauer - Talk | Contributions 20:40, 17 November 2021 (UTC)
- @JoKalliauer:
- danke für die antwort - das muss ich mir erst anschauen und gehversuche starten bevor ich wieder laienhaft fragen stelle
- eine orientierungsfrage habe ich jedoch - weil ich nicht mehr weiss wo ich das gesehen habe, hier oder in einem anderen forum
- ungroup inkscape - es wurde 'deep ungroup' genannt, und der autor schrieb er musste das script anpassen um die clip-pfade zu bearbeiten, damit das svg beim auflösen der gruppierung nicht zerfällt und sich optisch nicht unterscheidet vom gruppierten svg - das würde mich interessieren weil ich da manuell per hand in inkscape schon am ganz schön am werkeln bin - weisst du was ich meinen könnte? in deinem letzten gliederungspunkt, der 'ungruppieren' enthält ist kein link enthalten, also weiss ich nicht welches script du meinst
- die verblist für inkscape hast du selbst erstellt? woher stammen sie? - danke --Mrmw (talk) 08:43, 18 November 2021 (UTC)
- NACHTRAG: ich habe entdeckt dass es in inkscape bereits eine fest eingebaute deep-ungroup-erweiterung (erweiterungen->anordnen->alle gruppierungen aufheben) gibt und diese auf den beschriebenen anwendungsfall getestet - es ist am ergebnis deutlich zu sehen, dass sie etwas anderes (u.o. mehr?) macht als wie wenn man händisch wiederholt die gruppierung aufhebt - allerdings ist das ergebnis fehlerhaft und unbrauchbar - anschaulich wirds wenn man es selbst testet:
- Ungroup: https://github.com/JoKalliauer/cleanupSVG/blob/master/UngroupByInkscape.sh#L33
- Problems with ungroup: https://gitlab.com/inkscape/inkscape/-/issues?author_username=JoKalliauer&search=ungroup
- Die von dir angesprochene Deep-Ungroup-Erweiterung verwende ich nicht
inkscape --verb-list
, geh einfach mal die Befehle voninkscape --help
durch- — Johannes Kalliauer - Talk | Contributions 22:41, 18 November 2021 (UTC)
Inkscape Kommandozeile und andres
[edit]@JoKalliauer: hallo, ich teste jetzt die ersten befehle
- wenn ich
C:\Programme\Inkscape\bin\inkscape.exe --with-gui C:\work_c\newSvg\tst\newSVG_76.svg --actions='DialogDocumentProperties;FitCanvasToDrawing;FileSave;FileClose;FileQuit'
ausführe, wird die zeichnung richtig gesetzt und gespeichert, jedoch bleibt für jede datei eine leere inkscape-instanz offen - weisst du woran das liegt? --Mrmw (talk) 18:33, 19 November 2021 (UTC)
- maybe try --batch-process see https://wiki.inkscape.org/wiki/Using_the_Command_Line#Deprecations_and_Replacements (In my case it closes inkscape, but I get a warning/crash, I think Save,close and quit is too much, but I don't use it that often to care) — Johannes Kalliauer - Talk | Contributions 21:17, 19 November 2021 (UTC)
@JoKalliauer:
hallo, ich habe ohne erfolg versucht scour per kommandozeile zur arbeit zu bewegen
ich arbeite in win10 in der normalen cmd
versucht habe ich folgendes:
python -m C:\work_c\scour-master\scour\scour.py -i C:\work_c\newSVG_19.svg -o C:\work_c\newSVG_19_ed.svg
per python /?
kann ich mir dir optionen für python.exe ansehen, zb. -m
gibt es einen solchen befehl auch für scour.py? - ich gehe davon aus -i
und -o
sind beides parameter und optionen für scour.py?
oder gibt es eine doku für die scour.py?
als fehler wird python.exe: Error while finding module specification for 'C:\\work_c\\scour-master\\scour\\scour.py' (ModuleNotFoundError: No module named 'C:\\work_c\\scour-master\\scour\\scour'). Try using 'C:\work_c\scour-master\scour\scour' instead of 'C:\work_c\scour-master\scour\scour.py' as the module name.
ausgegeben
ich habe den befehl auch ohne .py
versucht - funktioniert auch nicht
danke für deine hilfe - mit mir kannst und sollst du bitte deutsch schreiben --Mrmw (talk) 19:57, 21 November 2021 (UTC)
- Manchmal wechelse ich unabsichtlich die Sprache (interesannterweise nur von Deutsch nach Englisch), insbesondere wenn ich kurz was nachschaue und den alten text nicht mehr lese.
- kannst du mal folgende Befehle probieren:
pip3 install --upgrade https://github.com/codedread/scour/archive/master.zip pip install --upgrade https://github.com/codedread/scour/archive/master.zip
- Falls er pip3 bzw pip nicht kennt probier
python3 -m pip install --upgrade pip python -m pip install --upgrade pip
- Falls er python3 bzw python auch nicht kennt, dann solltest du https://www.python.org/downloads/ installieren und
C:\Python3\Scripts
sowieC:\Python3\Scripts
zu PATH hinzufügen. - Die Windows-Powershell kann meines Wissens mehr als CMD, daher verwende ich auf Win wenn dann die Powershell. (Wobei das meiste mache ich WSL.)
- — Johannes Kalliauer - Talk | Contributions 21:27, 21 November 2021 (UTC)
- Falls er python3 bzw python auch nicht kennt, dann solltest du https://www.python.org/downloads/ installieren und
@JoKalliauer:
hmmm, danke - ich hatte scour ursprünglich von https://github.com/scour-project/scour geladen und versucht das darin enthaltene scour.py
auszuführen - immer ohne erfolg
nach deinem hinweis hab ich einfach mal pip install scour
ausgeführt
anschließend hat python C:\Users\UserIch\AppData\Local\Programs\Python\Python310\Scripts\scour-script.py -i C:\work_c\newSVG_19.svg -o C:\work_c\newSVG_19_ed.svg
letztendlich funktioniert und die optimierte datei erzeugt
wird denn mit scour-script
was andres ausgeführt als mit scour.py
?
wenn ich das richtig verstehe benötige ich -m
um das modul scour.py
auszuführen - und scour-script.py
lässt sich 'normal' ausführen?
unabhängig davon weiss ich immer noch nicht wo ich diese parameter nachlesen kann - i und o steht offensichtlich für input und output - aber ist das wo dokumentiert?
für die restlichen optionen wäre das schon sehr interessant, z.b. --keep-unreferenced-defs --set-precision=6
usw.
danke und gruß --Mrmw (talk) 21:53, 21 November 2021 (UTC)
scour --help
? — Johannes Kalliauer - Talk | Contributions 22:04, 21 November 2021 (UTC)
@JoKalliauer:
ja das ist interessant und ich habe wieder einiges gelernt - dadurch dass pip das paket in C:\Users\UserIch\AppData\Local\Programs\Python\Python310\Scripts
installiert, dort eine scour.exe
platziert, die vermutlich das scour-script.py
ausführt und dieser pfad in meiner PATH-umgebungsvariable eingetragen ist kann ich nun einfach scour -i input -o output
oder scour --help
verwenden
grundsätzlich bin ich nun arbeitsfähig - allerdings unzufrieden, weil ich scour nur über die pip-installation verwenden kann - wenn ich nun mal in die verlegenheit komme py-code auszuführen über die cmd oder shell der nicht in pip verfügbar ist, habe ich ein problem
hast du zeit und geduld mir noch tipps dazu zu geben?
ich habe z.b. noch nicht verstanden was scour.scour
in python3 -m scour.scour -i "${file}" -o "$i"
bedeutet
ist das erste scour ein pfad oder ein modul? ich bekomme immer fehlermeldungen, dass module nicht gefunden werden können (s.o.) - danke und gruß --Mrmw (talk) 07:51, 22 November 2021 (UTC)
- Ich hab zwar mal ein *.py-Skript geschrieben, aber keine Ahnung von Python/Pip/Module. Wenn es funktioniert bin ich glücklich, wenn nicht kümmere ich mich darum dass es funktioniert. Da es bei mir selten Probleme macht, investierte ich darin auch keine Zeit.
- Also mehr als den Output von
python3 --help
sowie vonpython3 -m scour
zu lesen weiß ich auch nicht. — Johannes Kalliauer - Talk | Contributions 08:48, 22 November 2021 (UTC)
@JoKalliauer:
in der readme von scour steht explizit drin, dass man es mit pip installieren soll
vielleicht ist meine annahme falsch, dass scour auch ohne eine pip-installation anzuwendbar ist --Mrmw (talk) 09:52, 22 November 2021 (UTC)
weitere Fragen
[edit]@JoKalliauer:
du hast mehr erfahrung damit inkscape über die kommandozeile zu bedienen - deshalb frage ich ganz frei
ist es üblich per kommandozeile in dialogform zu arbeiten? d.h. werte abfragen und von denen abhängig neue befehle geben?
konkret - ich würde die leinwandgröße auf die zeichnung einpassen lassen, aber gerne einen rand dazugeben, d.h. anschließend die seitengröße ausgeben und dann, wenn möglich die abmessungen der seite auf bestimmte werte festlegen
geht das? - danke und gruß --Mrmw (talk) 12:54, 22 November 2021 (UTC)
- Warum nicht mit GUI? https://www.gutefrage.net/frage/vektorgrafik-mit-inkscape-zuschneiden-und-groesse-einstellen?foundIn=list-answers-by-user#answer-257626902 — Johannes Kalliauer - Talk | Contributions 13:11, 22 November 2021 (UTC)
auswählen und zentrieren
[edit]@JoKalliauer: hi, vielleicht kannst du mir helfen - ich will über kommandozeile in inkscape alle objekte auswählen und als gruppe in der seite horizontal und vertikal zentrieren
ich habe nachgesehen und die actions object-align
und select-all
in die engere auswahl gezogen
allerdings weiss ich nicht wie die weiteren optionen syntaktisch anzugeben sind Align selected objects; usage: [[left|hcenter|right] || [top|vcenter|bottom]] [last|first|biggest|smallest|page|drawing|selection]? group? anchor?
ohne erfolg versucht habe ich inkscape --with-gui " & pathDest01 & " --actions=select-all;object-align hcenter|vcenter|page?|group?;FileSave;FileClose;FileQuit"
weisst du was ich ändern muss?
kannst du mir sagen wo die syntax beispielhaft erklärt ist für actions mit weiteren argumenten?
danke und gruß --Mrmw (talk) 21:44, 24 November 2021 (UTC)
- Ich weiß, die wenigsten mögen das, aber ich bin ehrlich&transparent. [In meiner naiven Hoffnung, dass Lügen&Ausreden&Unfairheiten&Korruption&Freundalwirtschaft gesellschaftlich von einem nicht mehr erwartet werden ohne als unhöflich zu gelten.]
- Ich arbeite mit Inkscape (außer um Gruppierungen zu entfernen oder Randlos zuzuschneiden) nicht mit der Kommadozeile, daher weiß ich dazu wenig.
- Daher würden viele sagen, dass sie dir nicht helfen können, was technisch wissenschaftlich (nicht Sprachwissenschaftlich, weil man sprachwissenschaftlich oft A sagt und B meint) gesehen falsch ist. Jeder durchschnittliche Bürger mit Internetzugang kann dir helfen, wobei der Großteil mehr Aufwand hineinstecken müsste als du selbst.
- Bei der Frage kann ich dir nicht mit vertretbaren Aufwand weiterhelfen. Ich glaube das dein Inkscape-Problem zu spezifisch ist um auf Commons die richtige Person dafür zu suchen.
- Ich kann dir https://letmegooglethat.com/?q=Inkscape+Command+Line empfehlen, das wäre auch das was ich machen würde.
- — Johannes Kalliauer - Talk | Contributions 13:45, 25 November 2021 (UTC)
- @JoKalliauer: hmmm, danke für deine antwort - ich verstehe aber nicht wieso du das so ausschweifend darstellst - du konntest mir schon sehr oft weiterhelfen und spziell in der sache hast du mir recht eindeutig zu verstehen gegeben, dass ich dich hier um rat bitten darf (s.
https://github.com/JoKalliauer/cleanupSVG hat sehr viele Skripte, sag mir was du machen willst und ich sag dir welches du brauchst
) - aber ist doch kein problem, wenn du mir nicht helfen kannst - ich will niemanden auf die nerven gehen - ich hab schon zu diesem thema recherchiert, bin halt noch zu keiner lösung gekommen
- deine behauptung jeder mit internetzugang könne mir helfen ist falsch - deswegen frage ich spezialisten wie dich - ich freu mich wenn mich leute konkrete spezifische dinge fragen, dann kann man entweder konkret helfen oder kurzum selber passen
- nix für ungut - danke trotzdem - gruß --Mrmw (talk) 16:03, 25 November 2021 (UTC)
- Sorry, du kannst mich eh fragen, nimmst nicht so ernst ;-). Ich finde nur die Antwort: "Ich kann dir nicht helfen" falsch, weil meiner Meinung jeder der sich lang genug hineinarbeitet ein Spezialist wird. Zusammengefasst in dem Punkt kann ich dir nicht mit vertretbaren Aufwand helfen. (nicht dass ich dir nicht helfen will) — Johannes Kalliauer - Talk | Contributions 16:08, 25 November 2021 (UTC)
- @JoKalliauer: hmmm, danke für deine antwort - ich verstehe aber nicht wieso du das so ausschweifend darstellst - du konntest mir schon sehr oft weiterhelfen und spziell in der sache hast du mir recht eindeutig zu verstehen gegeben, dass ich dich hier um rat bitten darf (s.
upload commons & igen
[edit]@JoKalliauer and Sarang: hi, hat jemand von euch ohne zeit investieren zu müssen einen tipp für mich, wie ich eine vielzahl an bilder geeignet gleichzeitig in commons hochladen kann? sie zeichnen sich dadurch aus, dass sie im gurnde alle eine sehr einfache und identische dateibeschreibungsseite haben würden und auch in der gleichen kategorie liegen würden (category:SVG coat of arms elements - fish) - des weiteren würde mich interessieren wie ich a) lokal auf meinem pc geeignet prüfen kann, ob eine vielzahl an svgs valide sind und wie ich b) die gleiche vielzahl an svgs in commons hochgeladen mit dem igen-script behandeln kann - danke und gruß --Mrmw (talk) 12:37, 26 November 2021 (UTC)
- https://www.google.com/search?q=Batch+Upload+files+to+Wikimedia+Commons+Spreadsheet+tools+site%3Awikimedia.org — Johannes Kalliauer - Talk | Contributions 12:53, 26 November 2021 (UTC)
- da muss ich dich heftig enttauschen. offline-validierung kann W3C nicht, und validierung von dateien auf deinem pc geht nur sehr eingeschrankt mit dem Commons:Commons SVG Checker (du weisst, dass es mehrere validatoren gibt und dass sie unterschiedliche aussagen liefern?), der lasst mehr als o.k. durchgehen wo andere schon fehler anmeckern.
- massenbehandlung mit dem script geht leider uberhaupt nicht - da muss jedes einzeln angefasst werden ! das ist naturlich sehr aufwendig. wenn es eine grosse serie von gleichartigen dateien gibt, die einheitlich hergestellt worden sind, und ich sehe bei den ersten 10 oder 20 dass es immer die gleiche validierung gibt, stelle ich die igen-zeile ungepruft in den rest; und mache nur mehr stichproben, ob es wirklich so ist.
- ich sehe auch keine moglichkeit da was zu andern; so wunschenswert eine verbesserung da auch ware. -- sarang♥사랑 14:17, 26 November 2021 (UTC)
- Sorry für meine kurze Antwort. das tool für batch-upload ist vermutlich mw:Manual:Pywikibot, wenn die eine Graphische Oberfläche willst würde ich Commons:Commons:Pattypan/de verwenden.
- a)Lokal validieren müsste vermutlich mit dem Quellcode von https://github.com/validator/validator funktionieren aber das aufsetzen könne ev. mühsam sein. Auf Help:SVG_guidelines#Why_validation_is_generally_not_desired siehst du warum ich ob eine Datei valide ist für irrelevant halte.
- b)Java-Skript (User:Sarang/simpleSVGcheck.js) kann man sicher auch lokal für jede Datei starten. Ich bin nur nicht die richtige Person dafür.
- 22:13, 9 December 2021 (UTC)