画像を回転させようとしていますが、画像のサイズを維持したいです。たとえば、次の例の画像では、完全な長方形を表示し、回転後に黒い背景色を持たないようにしたいと考えています。
私を助けてください、私はそれを感謝します。
今私のコードは次のとおりです。
src_im = Image.open("test.gif")
im = src_im.rotate(30)
im.save("result.gif")
自動的にサイズを変更するには、expand
kwargが必要です。
src_im = Image.open("test.gif")
im = src_im.rotate(30, expand=True)
im.save("result.gif")
PILのドキュメントで説明されているように:
expand 引数が true の場合、回転したイメージを保持するのに十分な大きさの出力イメージを作成する必要があることを示します。省略または false の場合、出力イメージは入力イメージと同じサイズになります。
黒の背景では、GIF 画像を保存するときに透明色を指定する必要があります。
transparency = im.info['transparency']
im.save('icon.gif', transparency=transparency)
新しい画像のサイズを設定していません - 30 度だけ回転している場合は、画像を拡大する必要があります...
http://effbot.org/imagingbook/image.htmページから:
expand 引数が true の場合、回転したイメージを保持するのに十分な大きさの出力イメージを作成する必要があることを示します。省略または false の場合、出力イメージは入力イメージと同じサイズになります。
試してみてください(これはブラウザに入力されるため、テストされていません):
src_im = Image.open("test.gif")
im = src_im.rotate(30, expand=True)
im.save("result.gif")
黒い背景の場合はもう少し注意が必要です。90 度回転していないため、「何か」を含める必要がある正方形の領域があります (ただし、透明度が必要な場合もあります)。この回答をご覧ください: PIL を使用して Python で回転し、展開引数を true に設定するときに画像の塗りつぶし色を指定してください
幸運を!