wie man ein SVG ohne Anti-Aliasing rastert

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.Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Hmm ... es sieht nicht so aus, als ob Inkscape beim Exportieren in Raster eine Alias-Option anbietet. Sie können versuchen, das SVG in einer Raster-App (z. B. PS) zu öffnen und sehen, ob es Ihnen dort eine Alias-Option bietet.
Das Photoshop 7.0, das ich habe, scheint nicht in der Lage zu sein, SVGs zu öffnen. Ich habe keine anderen Programme, die das können. Wenn es Freeware gibt, die funktionieren könnte, bin ich daran interessiert, was sie sind.
Wie für Raster-Apps ist The GIMP Open Source. Paint.net ist Freeware. Ich bin mir jedoch nicht sicher, ob beide das Öffnen von SVG unterstützen.
Es sieht so aus, als gäbe es eine Möglichkeit, dies im Browser zu tun : stackoverflow.com/questions/16889078/…
Oh, und schließlich ... eine Problemumgehung könnte darin bestehen, den Screenshot zu machen, ihn in PhotoShop einzufügen und dann den "Posterize" -Filter / das Tool von PhotoShop zu verwenden, um die Farbpalette auf nur die Volltonfarben zu reduzieren, die Sie verwenden möchten.
Sie können als PDF drucken und Ghostscript rastern lassen.

Antworten (5)

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":

http://www.inkscape.org/en/download/

Danke, weißt du, wie lange es dauert, bis es herauskommt? Ich habe es auf der Seite nicht gesehen.
Die aktuelle Phase ist "Frost". Sie können den Fortschritt in Richtung der Veröffentlichung hier sehen: inkscape.org/en/develop/next-release Ich denke, es sollte innerhalb der nächsten 5 Monate veröffentlicht werden.
Wow. Sie springen von 0,48 auf 0,91! Zugegeben, das ist weniger als „eine halbe Version“, aber immer noch ein riesiges Update in der Inkscape-Welt. Version 1.0 wir kommen!
Auf den Export hat das leider keine Auswirkungen...
Hat bei mir auch beim Export als PNG-Datei nicht funktioniert.
Manchmal funktioniert dieser Schalter nicht, weil Ihr Desktop-Stil in den Einstellungen mit Shape-Rendering-Eigenschaften verschmutzt wird. Ich weiß noch nicht, was dies verursacht. Versuchen Sie es mit einer neuen Einstellungsdatei und einem neuen Dokument.
Dieser Schalter hat bei mir keine Wirkung, egal was ich tue. Auch wenn ich ein brandneues Bild mache, noch bevor ich es exportiere.

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.

Geben Sie hier die Bildbeschreibung ein

Im ausgeschalteten Zustand sieht das Bild glatter aus.

Geben Sie hier die Bildbeschreibung ein

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.

Geben Sie hier die Bildbeschreibung ein

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.

Geben Sie hier die Bildbeschreibung ein

Sie können das Bild jetzt speichern und Antialiasing wird deaktiviert.

Geben Sie hier die Bildbeschreibung ein

Dies wurde ein paar Mal als Fehler gemeldet:

Perfekte Erklärung! Für die Illustration hätte eine diagonale oder runde Form den Effekt viel besser sichtbar gemacht.
Ich habe festgestellt, dass das Laden in GIMP nicht funktioniert hat, es sei denn, ich habe jede Instanz von shape-rendering:autoin der SVG aufgespürt und in crispEdges. Es stellt sich heraus, dass viele Pfade (vielleicht alle) die :autoSpezifikation in ihrem Stil hatten.
Arbeitete für mich mit GIMP an einer komplexen Zeichnung. ( shape-renderingErschien 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.pngBeachten 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.

Nicht antialisiertes Erdbeerbild. Vergrößertes, nicht antialisiertes Erdbeerbild.

Wenn Ihr Bild auch Text enthält, müssen Sie auch Text hinzufügen -dTextAlphaBits=1. Ändern Sie den -r72auf einen anderen Wert, um das Bild neu zu skalieren.

Das ist sicher ein Umweg, aber verdammt, wenn es nicht funktioniert hat.
Um dasselbe mit ImageMagick zu machen: magick +antialias -density 72 image.pdf image.pngOder, in einem Schritt von SVG: inkscape --export-pdf=- image.svg | magick +antialias -density 72 pdf:- image.pngDas 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.pngBeachten Sie, dass magick +antialias...dies noch nicht mit SVGs funktioniert, aber wie gezeigt mit PDFs funktioniert.

Sie können auch die shape-renderingEigenschaft 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:

Inkscape-XML-Editor

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.

Das ist großartig! Genau das, was ich für ein Bild brauchte, bei dem einige Formen geglättet werden sollten, andere aber ohne es besser aussehen. Vielen Dank!
Das ist perfekt, aber derzeit in Inkscape defekt. gitlab.com/inkscape/inbox/-/issues/5151

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.