Python Imaging Libraryでサイズ変更された画像の品質を調整する方法は?

StackOverflow https://stackoverflow.com/questions/1405602

  •  05-07-2019
  •  | 
  •  

質問

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

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

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

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

役に立ちましたか?

解決

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)

のソースをご覧ください< Photologueのcode> models.py を使用して、その方法を確認してください。

他のヒント

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を考慮するため。ただし、圧縮処理はまだ開始されておらず、画像を保存するまで実行されません。つまり、サムネイル化では、品質のグラデーションではなく、リサンプリングのための個別のアルゴリズムを扱います。だから、ここではきめ細かく制御することはできません。

非可逆圧縮を使用した形式で保存する場合は、品質のレベルを指定する場所です。

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

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

from PIL import Image

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

このようにして、私は自分のプログラムに非常に素晴らしい親指を立てています。

アンチエイリアスnは品質を90に設定します

   img = img.resize((128,128),Image.ANTIALIAS)
   img.save(os.path.join(output_dir+'/'+x,newfile),"JPEG",quality=90)

http://www.dzone.com/snippets/resize-thousands- images-python

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

1200x1200-&gt; 600x600-&gt; 64x64

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top