2013-10-10 10 views
9

Die mit PIL (1.1.7) erstellten JPEG-Bilder haben eine sehr schlechte Qualität. Hier ein Beispiel:Warum ist die Qualität der von PIL erzeugten JPEG-Bilder so schlecht?

Eingang: http://s23.postimg.org/8bks3x5p7/cover_1.jpg

Ausgang: http://s23.postimg.org/68ey9zva3/cover_2.jpg

Das Ausgangsbild wurde mit dem folgenden Code erstellt:

from PIL import Image 
im = Image.open('/path/to/cover_1.jpg') 
im.save('/path/to/cover_2.jpg', format='JPEG', quality=100) 

Der rote Text sieht wirklich schrecklich. Das Speichern des Bildes mit GIMP oder Photoshop kommt der von PIL erzeugten schlechten Qualität nicht einmal nahe. Weiß jemand, warum das passiert und wie es gelöst werden kann?

Danke für Ihre Hilfe!

+1

Sie speichern ein JPEG eines JPEG. Du verlierst zweimal Informationen. Sind Sie sicher, dass GIMP und Photoshop das JPEG tatsächlich erneut verarbeiten und nicht nur so speichern, wie es ist (weil die Programme es als JPEG erkennen und daher nichts tun)? – John

+0

Danke für Ihre schnelle Antwort. Mir ist bewusst, dass ich zweimal Informationen verliere. Es ist nur ein sehr einfaches Beispiel. In der Produktion verändere ich auch das Bild :). Auch wenn ich das Bild in GIMP oder Photoshop skaliere, sieht das resultierende Bild viel schärfer aus. Die beiden Personen sehen in den beiden Bildern fast gleich aus, aber der rote Text sieht wirklich anders aus. – Pascal

+0

Ich zweifle nicht, dass es von GIMP/Photoshop schärfer aussieht. Aber ist es * anders * vom Eingangsbild? Nachdem Sie es als JPEG von GIMP/Photoshop gespeichert haben, wurde etwas geändert? Wenn die Antwort nein ist, dann könnte PIL nur "schlecht" aussehen, weil es tatsächlich die JPEG-Komprimierung anwendet, während die andere nicht. Siehst du, worauf ich hinaus will? – John

Antwort

23

JPEG-Qualität besteht aus zwei Teilen. Die erste ist die quality Einstellung, die Sie bereits auf den höchstmöglichen Wert gesetzt haben.

JPEG verwendet auch chroma subsampling, vorausgesetzt, dass Farbtonänderungen weniger wichtig sind als Helligkeitsänderungen und einige Informationen können sicher weggeworfen werden. Leider ist dies bei anspruchsvollen Anwendungen nicht immer der Fall, und das kann man am roten Rand am besten bemerken. PIL legt keine dokumentierten Einstellungen offen, um diesen Aspekt zu kontrollieren.

Bearbeiten von Pascal Beyeler:

Ich habe gerade eine Option, die Subsampling deaktiviert. Sie können Subsampling = 0 beim Speichern eines Bildes einstellen und das Bild sieht viel schärfer aus! Danke für Ihr Hilfezeichen!

im.save('/path/to/cover-2.jpg', format='JPEG', subsampling=0, quality=100) 
Verwandte Themen