質問: PIL.Image.open(path).resize((300,300)) # ====続く=== # ```
回答: 上手く出来ないのは、1行の処理の中でファイルのOpenと縦横比(アスペクト比)を保ったサイズ変換の両方を行おうとしているためでしょう。 PIL.Image.open PIL.Image.size / PIL.Image.width / PIL.Image.height PIL.Image.Image.resize > > Parameters: size – The requested size in pixels, as a 2-tuple: (width, height). > > > resize()で縦横比を保つためには、元々のデータの縦横サイズ(ピクセル数)の情報が必要ですが、それはOpen()と同じ行の中では取得・指定することはできません。 コメントで紹介した Python/Pillowで画像サイズを変更する方法 のように2行に分ける必要があります。 変更先サイズをパーセントで指定するには、100%を1.0として、元データの縦と横に同じ値で掛け算して、結果を整数に変換すれば良いでしょう。 上記紹介先では0.8(=80%)に変換しています。 他に、パーセント指定ではありませんが、縦横どちらかをピクセル指定して縦横比を保って変換する方法と、縦横ピクセル数を指定してその範囲で縦横比を保って最大サイズになるように変換する方法があります。 上記紹介先と同様の処理も含めて、Pillow (PIL) - 画像をリサイズする方法について に提示されています。