Das ist jetzt natürlich keine reine Code-Frage, aber es wurden ja auch schon Editoren u.a. thematisiert.

Welche Möglichkeiten gibt es, eine Graphikdatei, etwa *.png, in TikZ-Code zu übersetzen?

Mir geht es speziell um diese kleinen Bildchen (die es übrigens auch in groß gibt - klicke auf die Graphik):

alt text ------ alt text ------ alt text

Die möchte ich ungern von Hand nachzeichnen, aber dennoch lieber in TikZ-Form haben.

PS: Es wäre natürlich das Schönste, wenn es mal ein Paket für sowas gäbe (was vll. dann irgendwie auf ghostscript oder sowas zugreift), aber soviel Glück werden wir wohl nicht haben.

gefragt 01 Nov '18, 20:49

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 01 Nov '18, 21:04

Handarbeit ;-) ansonsten kann ein Grafikprogramm (vllt. Inkscape) bitmap-Dateien (wie PNG) tracen und Vektorgrafiken generieren (SVG) die man mit Tools zu TikZ übersetzen kann (Inkscape plugin, svg2tikz).

(01 Nov '18, 20:54) stefan ♦♦

Das 3. Bild werde ich wohl nie von Hand hinbekommen... Inkscape soll wohl gehen. Mit irgendwelchen Zusätzen (?). Hat das schonmal jmd. erfolgreich gemacht?

(01 Nov '18, 21:04) cis
(01 Nov '18, 21:13) stefan ♦♦

Aha, also mit dem Programm: SVG to TikZ converter - das werde ich mal testen.

(01 Nov '18, 21:24) cis
1

Da die Datei dort schon in SVG vorliegt, kann es einfach sein. Ohne exotische Features wie Transparenz sollte es gehen. Einzige Hürde wäre Installation des Tools. Ansonsten: einfach SVG in PDF wandeln und das verwenden. Es braucht nicht TikZ sein. PDF-Grafiken sind auch skalierbar und können klein sein und als images in nodes verwendet werden.

(01 Nov '18, 21:47) stefan ♦♦

Jain, ich möchte einen geschlossenen Code erstellen, der auf Hilfdateien wie (png bzw. pdf) verzichten kann. Da wäre es gut, wenn ich alles in TikZ-Form habe.

(01 Nov '18, 22:05) cis
1

Einbinden mit base64 encoding? :-) Tausende Zeilen Code sind auch nicht übersichtlich. Und ob man umgewandelte ellenlange Pfade mit tausenden Koordinaten als .tex mit input einbindet oder als Bilddatei - letztere ist immerhin vielseitig verwendbar und direkt anschaubar.

(01 Nov '18, 22:20) stefan ♦♦

Also irgendein eigenes Gekritzel wird mit o.g. Tool problemlos in TikZ-Code übersetzt. Wenn ich eines der Bilder mit Inkscape öffne macht er mir daraus:
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{tikz} \begin{document} \begin{tikzpicture}[y=0.80pt, x=0.80pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]

\end{tikzpicture} \end{document}

Das ist jetzt nicht so spektakulär...

(14 Nov '18, 15:01) cis

Wenn ich mir allerdings die svg-Datei besorge und diese mit Inkscape öffne, geht es. Allerdings macht er aus Schwarz Weiß und aus Weiß Weiß. Was muss ich da einstellen?

alt text

PS: Ich ich habe bei Inscape sämtliche Einstellungen und Kombinationen betreffs des TikZ-Exports probiert. Ich weiß nicht, ob das was komplizierteres ist; daher frage ich das mal auf dem Matheplanet vll. bringt es was.

(14 Nov '18, 15:36) cis
Ergebnis 5 von 9 show 4 more comments

Um hier mal eine Antwort zu erstellen:

Mit dem Tip von @stefan ( http://www.texample.net/weblog/2012/apr/28/tux-tex-tikz/ ) habe ich Inscape plus Erweiterung svg to Tikz converter installiert.

Mit Hilfe der Einstellung

alt text

erhalte ich dann TikZ-Code, und zwar

A. Bei einfachen svg Beispielen ohne Weiteres.
B. Bei komplizierteren svg Beipielen muss ggf. every path/.style={fill=black} ergänzt werden.
C. Bei Pixelgrphiken (z.B. png) ist eine Vektorisierung nötig: im Inscape Shift+Alt+B drücken.

Bild zu A.
alt text

Bild zu B.
alt text

Da die Codes sehr umfangreich werden können nur
Code zu A.

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}

\begin{document}
\definecolor{cdd0000}{RGB}{221,0,0}
\definecolor{cffce00}{RGB}{255,206,0}

\begin{tikzpicture}[y=0.80pt, x=0.80pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\begin{scope}[cm={{52.91667,0.0,0.0,52.91667,(-31.75,32.41667)}}]
\path[fill=black,rounded corners=0.0000cm] (0.0000,0.0000) rectangle (1.3229,0.7937);\path[fill=cdd0000,rounded corners=0.0000cm] (0.0000,0.2646) rectangle (1.3229,0.7937);\path[fill=cffce00,rounded corners=0.0000cm] (0.0000,0.5292) rectangle (1.3229,0.7937);\end{scope}
\end{tikzpicture}

From:
\begin{verbatim}
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg xmlns="http://www.w3.org/2000/svg" width="1000" height="600" viewBox="0 0 5 3">
    <desc>Flag of Germany</desc>
    <rect id="black_stripe" width="5" height="3" y="0" x="0" fill="#000"/>
    <rect id="red_stripe" width="5" height="2" y="1" x="0" fill="#D00"/>
    <rect id="gold_stripe" width="5" height="1" y="2" x="0" fill="#FFCE00"/>
    </svg>
\end{verbatim}
\end{document}

Permanenter link

beantwortet 14 Nov '18, 17:48

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 14 Nov '18, 18:31

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×33

gestellte Frage: 01 Nov '18, 20:49

Frage wurde gesehen: 6,582 Mal

zuletzt geändert: 14 Nov '18, 18:31