PIL: Bildgrößenanpassung: Algorithmus ähnlich wie Firefox

8

Ich komme über die gleiche schlecht aussehende Größenänderung von allen 4 Algorithmen von PIL

%Vor%

Aber die Ergebnisse sehen viel schlechter aus, als wenn man nur in Firefox skaliert.

Ссылка

Wie kann ich einen ähnlichen Effekt wie das firefox-Ergebnis mit PIL (oder einer anderen Python-Bildbibliothek) erzielen?

BEARBEITEN : Bewegen Sie die Maus, um zu sehen, um was für ein Bild es sich handelt

Ссылка Ссылка Ссылка Ссылка Ссылка Ссылка Ссылка Ссылка Ссылка Ссылка Ссылка Ссылка Ссылка

Es sieht so aus, als ob RGB und ANTIALIS am besten aussehen. Irgendwelche anderen Empfehlungen?

Als Referenz ist dies der, der am besten aussieht:

%Vor%     
Paul Tarjan 06.09.2009, 18:58
quelle

3 Antworten

8

Ich habe das "Original" mit Python skaliert und die gleichen Ergebnisse gefunden wie Sie. Ich habe auch das "Original" mit GIMP skaliert und ich habe die gleiche (wenn nicht minderwertige) Qualität bekommen. Das hat mich vermuten lassen, dass Firefox schummelt. Möglicherweise wird es in RGB konvertiert ("Original" -Modus ist indizierte Farbe). Also der folgende Code:

%Vor%

Das Ergebnis ist fast so gut wie das von Firefox.

    
cyberthanasis 06.09.2009, 21:21
quelle
1
  

Es sieht so aus, als ob RGB und ANTIALIS am besten aussehen. Irgendwelche anderen Empfehlungen?

Nein, das ist tatsächlich das erwartete Ergebnis. Jede Größenänderung, die in der ursprünglichen eingeschränkten Palettenbetriebsart durchgeführt wird, erzeugt wahrscheinlich wegen des Mangels an verfügbaren Zwischenfarben in der Palette gezackten Abfall; und ANTIALIAS ist der only -Resize-Filter, der für Downscaling verwendet werden soll: BILINEAR und BICUBIC nehmen wirklich nur zwei Pixel pro Achse und mischen zwischen ihnen, was für das Upscaling gut ist, aber nicht funktioniert Alle, wenn eine oder beide Achsen verkleinert sind.

Leider hat thumbnail () nie richtig funktioniert, also musst du es selbst machen.

    
bobince 08.09.2009 01:07
quelle
0

Versuchen Sie es mit der Methode resize() anstelle von thumbnail() . Meiner Erfahrung nach verhalten sie sich sehr unterschiedlich.

Außerdem zeigt Ihr Code das Lesen einer .gif-Datei an, aber Ihr Original ist .png. Stellen Sie sicher, dass Sie wirklich alle Originaldaten haben, bevor Sie mit der Reduzierung beginnen.

    
Ned Batchelder 06.09.2009 19:01
quelle