Ich habe eine Karte in Inkscape erstellt und muss sie jetzt in eine Bitmap oder .png ändern. Die Karte wird von einem Computerprogramm interpretiert, das nach genauen Farben sucht, sodass die Kanten scharf sein müssen. Wenn ich eine .png mit Inkscape exportiere, einen Online-Dateikonverter verwende oder sogar einen Screenshot mache, ist es immer geglättet. Hilfe.
Die Entwicklungsversion von Inkscape (kommende Version 0.91) verfügt über einen globalen Anti-Aliasing-Schalter im Fenster „Dokumenteigenschaften“, der auch für den Export funktionieren sollte. Suchen Sie auf der Download-Seite nach "Entwicklungsversionen":
Inkscape 0.91 und höher kann Antialiasing umschalten. Darauf kann über das Fenster „Dokumenteigenschaften“ (Umschalt+Strg+D) zugegriffen werden. Wenn es eingeschaltet ist, was die Standardeinstellung ist, sieht dieses Bild einer Reihe von Dreiecken so aus.
Im ausgeschalteten Zustand sieht das Bild glatter aus.
Wie andere bereits erwähnt haben, hat dies derzeit keine Auswirkungen auf den PNG-Export. Antialiasing ist immer noch eingeschaltet und die Lücken zwischen den Dreiecken sind noch sichtbar.
Wenn Sie Antialiasing deaktivieren, fügt Inkscape shape-rendering="crispEdges"
der Datei etwas hinzu. Öffnen Sie Ihr SVG in einem Texteditor und schauen Sie irgendwo in Zeile 19 nach und Sie sollten es sehen.
Glücklicherweise wird dieses Tag beim Importieren des SVG in GIMP gelesen und eingehalten. GIMP kann ein SVG importieren und die Importauflösung festlegen, was bedeutet, dass Sie Ihr PNG beim Importieren auf die gewünschte Größe skalieren können. Es wird auf die Seitengrenzen zugeschnitten.
Sie können das Bild jetzt speichern und Antialiasing wird deaktiviert.
Dies wurde ein paar Mal als Fehler gemeldet:
shape-rendering:auto
in der SVG aufgespürt und in crispEdges
. Es stellt sich heraus, dass viele Pfade (vielleicht alle) die :auto
Spezifikation in ihrem Stil hatten.shape-rendering
Erschien nur einmal im SVG, im Gegensatz zu dem, was MutantBob gefunden hat.) Außerdem habe ich genau die gleichen Ergebnisse von ImageMagick erhalten (dieselbe Bibliothek wie GIMP, da bin ich mir sicher): magick -density 96 image.svg image.png
Beachten Sie, dass magick +antialias ...
dies noch nicht mit SVGs funktioniert und daher diese Inkscape-Dokumenteigenschaft muss so eingestellt werden, dass Aliasing sowohl mit GIMP als auch mit IM gesteuert wird (und IM sollte diese Informationen verwenden, um das Problem zu beheben).Eine einfache Lösung besteht darin, in PDF zu exportieren und dann Ghostcript für das resultierende PDF zu verwenden. Verwenden Sie ein Erdbeerbild von Openclipart und den Befehl
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m \
-r72 -dGraphicsAlphaBits=1 \
-sOutputFile=image.png image.pdf
Ich bekomme folgendes Ergebnis.
Wenn Ihr Bild auch Text enthält, müssen Sie auch Text hinzufügen -dTextAlphaBits=1
. Ändern Sie den -r72
auf einen anderen Wert, um das Bild neu zu skalieren.
magick +antialias -density 72 image.pdf image.png
Oder, in einem Schritt von SVG: inkscape --export-pdf=- image.svg | magick +antialias -density 72 pdf:- image.png
Das funktioniert auch irgendwie besser mit Linieneffekten als das in zwei Schritten. Beachten Sie auch, dass dies ein etwas anderes Aliasing erzeugt, als wenn Sie das SVG mit deaktivierter Eigenschaft „Antialiasing verwenden“ ( shape-rendering="crispEdges"
) speichern und dann Folgendes verwenden: magick -density 72 image.svg image.png
Beachten Sie, dass magick +antialias...
dies noch nicht mit SVGs funktioniert, aber wie gezeigt mit PDFs funktioniert.Sie können auch die shape-rendering
Eigenschaft von SVG verwenden, um Kanten scharf zu machen.
In SVG-XML sieht das so aus:
<svg:something shape-rendering="crispEdges" ... />
In der Benutzeroberfläche von Inkscape können Sie dies manuell mit dem XML-Editor ( Ctrl+ Shift+ X) festlegen, wie in diesem Screenshot gezeigt:
Wählen Sie den Knoten aus, für den die Eigenschaft gelten soll. Hier wende ich es auf eine Gruppe von Pfaden an. Die Eigenschaft wird rechts angezeigt. Um es hinzuzufügen, replizieren Sie den Text, den Sie in der unteren rechten Ecke sehen, und drücken Sie dann Set.
Es gibt eine in Rust geschriebene resvg- Bibliothek. Teil des Projekts ist eine Befehlszeilenanwendung, mit der Sie SVG als PNG rendern können. Diese Anwendung ermöglicht es, auf Geschwindigkeit anstatt auf Qualität zu optimieren, was im Allgemeinen das gewünschte Ergebnis liefert.
Sie können die Anwendung wie folgt ausführen, wie hier vom Autor beschrieben.
rendersvg --shape-rendering optimizeSpeed --text-rendering optimizeSpeed --image-rendering optimizeSpeed in.svg out.png
Nachteil ist - ich habe keine binäre Version gefunden, also müssen Sie es aus dem Quellcode kompilieren.
DA01
Wilhelm W
DA01
DA01
DA01
joojaa