5

画像を回転させようとしていますが、画像のサイズを維持したいです。たとえば、次の例の画像では、完全な長方形を表示し、回転後に黒い背景色を持たないようにしたいと考えています。

私を助けてください、私はそれを感謝します。

今私のコードは次のとおりです。

src_im = Image.open("test.gif")
im = src_im.rotate(30)
im.save("result.gif")

ここに画像の説明を入力 ここに画像の説明を入力

4

3 に答える 3

2

自動的にサイズを変更するには、expandkwargが必要です。

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)
于 2012-08-10T13:28:23.997 に答える
0

新しい画像のサイズを設定していません - 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 に設定するときに画像の塗りつぶし色を指定してください

幸運を!

于 2012-08-10T13:28:13.783 に答える