[[Vorlage(Getestet, bionic, focal)]]

{{{#!vorlage Wissen
[:Pakete installieren: Installation von Programmen]
[:Programme_starten: Starten von Programmen]
[:Terminal: Ein Terminal öffnen]
}}}

[[Inhaltsverzeichnis(1)]]

[[Bild(Wiki/Icons/terminal.png, 48, align=left)]]

[https://pngquant.org/ pngquant] {en} ist ein in [wikipedia_en:C99:]  von [https://kornel.ski/about Kornel Lesiński]  {en} und anderen geschriebenes Kommandozeilen-Programm zum verlustbehafteten („[wikipedia_en:Lossy_compression:lossy]“) Komprimieren von [wikipedia:Portable_Network_Graphics:PNG]-Grafiken. Es steht unter der [http://www.gnu.org/licenses/gpl-3.0.html GPLv3]- (oder später) oder einer [https://supso.org/projects/pngquant kommerziellen]  {en} Lizenz. Mit dem Programm ist es häufig möglich, die Größe von PNG-Dateien um 60% bis 80% zu reduzieren und dabei gleichzeitig die volle [wikipedia:Alphakanal:Alpha-Transparenz] zu wahren.

= Installation =
pngquant kann direkt aus den Quellen installiert werden.[1]

{{{#!vorlage Paketinstallation
pngquant, universe
}}}

= Bedienung =
pngquant wird im Terminal[3] mit folgendem Befehl aufgerufen:

{{{#!vorlage Befehl
pngquant [OPTIONEN] DATEI
}}}

== Optionen ==
Das Programm kennt unter anderem die folgenden Optionen:

{{{#!vorlage Tabelle
<rowclass="titel"-2> Optionen von `pngquant`
+++
<rowclass="kopf"> Option
Beschreibung
+++
`--ext neu.png`
Die Option ermöglicht es, einen eigenen Namensanhang für die komprimierte Output-Datei anzugeben. Standardmäßig werden entweder ''-or8.png'' oder ''-fs8.png'' verwendet. 
+++
`--quality min-max`
Mit den angegebenen Werten wird pngquant instruiert, die geringstmögliche Farbzahl zu wählen, um mindestens die angegebene Outputqualität zu erzielen. Sollte diese Qualität nicht erreicht werden, wird das Ergebnis nicht gespeichert und pngquant wird kommentarlos beendet. Die Qualitätswerte reichen von "0" (schlechteste Qualität) bis "100" (perfekt). 
+++
`--speed N`
Angabe der Geschwindigkeit ("N") von 1 (brute-force) bis 11 (am schnellsten). Die Voreinstellung ist 3. Die Geschwindigkeit beeinflusst die Qualität der Ausgabe: Eine Geschwindigkeit von 10 bewirkt Qualitätseinbußen in Höhe von 5%, ist aber achtmal schneller als der voreingestellte Wert.
+++
`--strip`
Entfernung der Metadaten
}}}

Weitere Optionen sind der [:man:Manpage] zu entnehmen.

== Beispiele ==
=== Einfache Komprimierung === 

{{{#!vorlage Befehl
pngquant --quality=60-80 datei1.png
}}}

Ergebnis (die Dateigrößenüberprüfung erfolgt mit [:du:] und ist nicht Teil des Programms!):

{{{
~: du -sh datei1.png                  
456K	datei1.png
~: pngquant --quality=60-80 datei1.png
~: du -sh datei1-fs8.png
124K	datei1-fs8.png
}}}

=== Komprimierung mit weiteren Optionen === 
Im folgenden Beispiel werden die Metadaten der Grafik entfernt (`--strip`), Angaben zur Komprimierung ausgegeben (`--verbose`) sowie ein eigener Name der Output-Datei festgelegt.

{{{#!vorlage Befehl
pngquant --force --quality=60-80 --strip --verbose eingabedatei.png --output ausgabedatei.png
}}}

Ergebnis:

{{{
~: du -sh eingabedatei.png
324K    eingabedatei.png
~: pngquant --force --quality=60-80 --strip --verbose eingabedatei.png --output ausgabedatei.png
eingabedatei.png:
  read 321KB file
  made histogram...30674 colors found
  selecting colors...8%
  selecting colors...16%
  selecting colors...66%
  selecting colors...75%
  selecting colors...100%
  moving colormap towards local minimum
  eliminated opaque tRNS-chunk entries...0 entries transparent
  mapped image to new colors...MSE=4.758 (Q=84)
  writing 93-color image as ausgabedatei.png
Quantized 1 image.
~: du -sh ausgabedatei.png
124K    ausgabedatei.png
}}}

=== Batch-Komprimierung === 

Es ist mit pngquant auch möglich, mehrere Komprimierungen auf einmal zu erledigen. Im folgenden Beispiel werden alle PNG-Dateien im aktuellen Ordner komprimiert.

{{{#!vorlage Befehl
pngquant --force --quality=60-80 --strip --verbose *.png 
}}}

Mit Hilfe von [:find:] ist es ebenfalls möglich, mehrere Komprimierungen auf einmal zu erledigen. Im folgenden Beispiel werden alle PNG-Dateien im Ordner '''/home/user/Downloads/PNG-Dateien''' und, rekursiv, in seinen Unterordnern komprimiert.

{{{#!vorlage Befehl
find /home/user/Downloads/PNG-Dateien -iname "*.png" -exec pngquant --force --quality=60-80 --strip --verbose {} \; 
}}}


Mit Hilfe der folgenden Befehlskombination werden ebenfalls alle PNG-Dateien in dem angegebenen Ordner und seinen Unterordnern komprimiert, die Eingabedateien werden in diesem Fall aber durch die komprimierten Versionen überschrieben.

{{{#!vorlage Befehl
find /home/user/Downloads/PNG-Dateien -iname "*.png" -exec pngquant --force --quality=60-80 --strip --verbose {} --output {} \; 
}}}


= Links =
== extern ==
 * [https://pngquant.org/ Projektseite] {en}
 * [github:kornelski/pngquant:pngquant auf Github]
 * [https://computingforgeeks.com/compress-png-images-on-linux-command-line/ How to Compress PNG images on Linux Command Line (CLI)]  {en} – Blogartikel (02/2019)
 * [https://guides.wp-bullet.com/batch-lossy-compress-png-with-pngquant-linux-command-line/ Batch Lossy Compress PNG with pngquant Linux Command Line]  {en} – Blogartikel (04/2017)

== intern ==
 * [:Shell/Anwendungen:]
 * [:Grafik:]

#tag: Grafik, Shell, Multimedia, Büro