2013-10-10 9 views
9

PIL(1.1.7)で作成したJPEG画像の品質は非常に悪いです。次に例を示します。PILによって生成されるJPEG画像の品質がそれほど悪いのはなぜですか?

入力:http://s23.postimg.org/8bks3x5p7/cover_1.jpg

出力:http://s23.postimg.org/68ey9zva3/cover_2.jpg

出力画像は、次のコードで作成されました:

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

赤い文字は本当にひどい見えます。 GIMPやPhotoshopで画像を保存しても、PILで作成された悪い品質には至りません。 これがなぜ起こり、どのように解決できるのか誰かが知っていますか?

ありがとうございました!

+1

JPEGのJPEGを保存しています。あなたは情報を2度失っています。 GIMPとPhotoshopは実際にJPEGを実際に処理していますが、そのまま保存するだけではありません(プログラムはJPEGと認識して何もしません)。 – John

+0

ご返信ありがとうございます。私は情報を2度失うという事実を認識しています。これは単なる非常に単純な例です。プロダクションでは、画像のサイズを変更しています:)。また、GIMPやPhotoshopでイメージのサイズを変更した場合、イメージがよりシャープに見えます。 2人の人物は2枚の写真の中でほとんど同じように見えますが、赤い文字は本当に違って見えます。 – Pascal

+0

私はそれがGIMP/Photoshopからシャープに見えることは疑いません。しかし、それは入力画像との違いは何ですか? GIMP/PhotoshopからJPEG形式で保存した後、何か変更されますか?答えが「いいえ」の場合、PILはJPEG圧縮を実際に適用しているために「悪い」と見えるかもしれませんが、他はそうではありません。私が何を得ているのか見てみましょうか? – John

答えて

23

JPEG画質には2つの部分があります。最初の設定は、可能な限り高い値に設定したqualityの設定です。

JPEGは、色相の変更が明るさの変更よりも重要ではなく、一部の情報を安全に捨てることができると仮定して、chroma subsamplingも使用します。残念なことに、要求の厳しいアプリケーションでは、これは必ずしも真実ではなく、赤いエッジでこれを最も簡単に認識できます。 PILは、この側面を制御するための文書化された設定を公開していません。パスカル・バイエラーによって

編集:

私はサブサンプリングを無効にするオプションを発見しました。画像を保存するときにサブサンプリング= 0に設定すると、画像がシャープに見えます。あなたのヘルプマークをありがとう!

im.save('/path/to/cover-2.jpg', format='JPEG', subsampling=0, quality=100) 
関連する問題