59

私は PIL に取り組んでおり、画像のサイズ変更またはサムネイル化中に画質を調整できるかどうかを知る必要があります。私が知っていることから、デフォルトの品質は 85 に設定されています。サイズ変更中にこのパラメーターを微調整できますか?

現在、次のコードを使用しています。

image = Image.open(filename)
image.thumbnail((x, y), img.ANTIALIAS)

このANTIALIASパラメーターは、おそらく最高の品質を提供します。品質オプションをより細かく設定できるかどうかを知る必要があります。

4

5 に答える 5

97

PIL のresize方法を手動で使用します。

image = image.resize((x, y), Image.ANTIALIAS)  # LANCZOS as of Pillow 2.7

続いて save メソッド

quality_val = 90
image.save(filename, 'JPEG', quality=quality_val)

models.pyPhotologueのソースを見て、彼らがどのようにそれを行っているかを確認してください。

于 2009-09-10T14:41:39.083 に答える
48

ANTIALIAS は、「85」の品質レベルに匹敵するものではありません。ANTIALIAS パラメータは、ピクセルをあるサイズから別のサイズにリサンプリングするために使用するアルゴリズムをサムネイル メソッドに指示します。たとえば、次のような 3x3 の画像があるとします。

2 2 2
2 0 2
2 2 2

サイズを 2x2 に変更すると、1 つのアルゴリズムで次のようになる場合があります。

2 2
2 2

近くのピクセルのほとんどは 2 ですが、別のピクセルからは次のような結果が得られる可能性があります。

1 1
1 1

真ん中の 0 を考慮に入れるためです。しかし、まだ圧縮の処理を開始しておらず、画像を保存するまで処理を開始していません。つまり、サムネイル化では、品質のグラデーションではなく、リサンプリング用の個別のアルゴリズムを扱っているということです。いいえ、ここで細かく制御することはできません。

非可逆圧縮形式で保存する場合は、ここで品質レベルを指定します。

于 2009-09-10T14:44:19.187 に答える
14

再スケーリングと圧縮を混同しないでください。

最高の品質を得るには、両方を使用する必要があります。次のコードを参照してください。

from PIL import Image

image = Image.open(filename)
image.thumbnail((x, y), Image.ANTIALIAS)
image.save(filename, quality=100)

このようにして、私は自分のプログラムに非常に優れた親指を持っています。

于 2010-10-20T07:00:15.250 に答える
-1

品質を向上させる 1 つの方法は、2 つのステップでダウンスケーリングを行うことです。たとえば、元の画像が 1200x1200 で、64x64 ピクセルにサイズ変更する必要がある場合、最初のステップでこれら 2 つのサイズの中間のどこかに縮小します。

1200x1200 -> 600x600 -> 64x64

于 2011-11-16T10:20:40.640 に答える