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, 15:49

cis's gravatar image

cis
8.3k16171267
Akzeptiert: 68%

bearbeitet 01 Nov, 16: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, 15: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, 16:04) cis
(01 Nov, 16:13) stefan ♦♦

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

(01 Nov, 16: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, 16: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, 17: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, 17: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...

(15 Stunden her) 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.

(15 Stunden her) cis
Ergebnis 5 von 9 Alle anzeigen

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 12 Stunden her

cis's gravatar image

cis
8.3k16171267

bearbeitet 12 Stunden her

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×623
×28

Frage gestellt: 01 Nov, 15:49

Frage wurde angeschaut: 111 Mal

Zuletzt aktualisiert: 12 Stunden her