2013-10-10 26 views
9

PIL (1.1.7) ile oluşturulan JPEG görüntülerinin kalitesi çok düşük. İşte bir örnek:PIL tarafından üretilen JPEG görüntülerinin kalitesi neden bu kadar kötü?

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

Çıktı: http://s23.postimg.org/68ey9zva3/cover_2.jpg

çıkış görüntü aşağıdaki kodla oluşturuldu:

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

kırmızı metin gerçekten kötü görünüyor. Görüntüyü GIMP veya Photoshop ile kaydetmek, PIL tarafından oluşturulan kötü kaliteye bile yaklaşmıyor. Birisi bunun neden olduğunu ve nasıl çözülebileceğini biliyor mu?

Yardımlarınız için teşekkürler!

+1

Bir JPEG'in JPEG'sini kaydediyorsunuz. İki kez bilgi kaybediyorsun. GIMP ve Photoshop'un aslında JPEG'yi yeniden işlediğinden ve sadece olduğu gibi kaydetmediğinden emin misiniz (programlar JPEG olarak tanımakta ve bu nedenle hiçbir şey yapmamakta)? – John

+0

Hızlı cevabınız için teşekkür ederiz. İki kez bilgi kaybettiğimin farkındayım. Bu sadece çok basit bir örnektir. Üretimde görüntüyü yeniden boyutlandırıyorum :). Ayrıca, görüntüyü GIMP veya Photoshop'ta yeniden boyutlandırırsam, ortaya çıkan görüntü çok daha keskin görünür. İki kişi iki resimde neredeyse aynı görünüyor ancak kırmızı metin gerçekten farklı görünüyor. – Pascal

+0

GIMP/Photoshop'tan daha keskin görünmesinden şüphe etmiyorum. Fakat giriş görüntüsündeki herhangi bir * farklı * var mı? GIMP/Photoshop'tan JPEG olarak kaydettikten sonra, herhangi bir şey değişti mi? Cevabınız hayırsa, PIL sadece "kötü" görünebilir çünkü JPEG sıkıştırmayı gerçekte uygularken diğeri de geçerli değildir. Ne aldığımı görüyor musun? – John

cevap

23

JPEG kalitesinde iki parça vardır. Birincisi, mümkün olan en yüksek değere ayarlamış olduğunuz quality ayardır.

JPEG, renk tonu değişikliklerinin hafiflik değişikliklerinden daha az önemli olduğunu ve bazı bilgilerin güvenle atılabileceğini varsayarak, chroma subsampling kullanır. Ne yazık ki zorlu uygulamalarda bu her zaman doğru değildir ve bunu kırmızı kenarlarda kolayca görebilirsiniz. PIL, bu yönü denetlemek için belgelenmiş bir ayar göstermez. Pascal Beyeler tarafından

Düzenleme:

Sadece alt örnekleme devre dışı bırakan bir seçenek buldum. Bir görüntüyü kaydederken alt örneklemeyi = 0 ayarlayabilir ve görüntü daha keskin görünüyor! Yardım İşaretiniz için teşekkürler!

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