4

PILのトリミング機能には、おそらく非常に基本的な問題があります。トリミングされた画像の色が完全にねじ込まれています。コードは次のとおりです。

>>> from PIL import Image
>>> img = Image.open('football.jpg')
>>> img
<PIL.JpegImagePlugin.JpegImageFile instance at 0x00
>>> img.format
'JPEG'
>>> img.mode
'RGB'
>>> box = (120,190,400,415)
>>> area = img.crop(box)
>>> area
<PIL.Image._ImageCrop instance at 0x00D56328>
>>> area.format
>>> area.mode
'RGB'
>>> output = open('cropped_football.jpg', 'w')
>>> area.save(output)
>>> output.close()

元の画像:ここに画像の説明を入力してください

および出力

ご覧のとおり、出力の色は完全に台無しになっています...

助けてくれてありがとう!

-ホフ

4

3 に答える 3

4

outputハンドラではなく、ファイル名にする必要があります。

于 2009-05-06T16:21:57.947 に答える
3

それ以外の

output = open('cropped_football.jpg', 'w')
area.save(output)
output.close()

ただする

area.save('cropped_football.jpg')
于 2009-05-07T10:35:36.260 に答える
1

実際に生成された出力への呼び出し以来、savePIL はファイル名または開いているファイルのいずれかを交換可能に使用できると想定する必要があります。問題はファイル モードにあります。デフォルトでは、テキスト規則に基づいて変換しようとします。'\n' は、Windows では '\r\n' に置き換えられます。ファイルをバイナリ モードで開く必要があります。

output = open('cropped_football.jpg', 'wb')

PS私はこれをテストしましたが、動作します:

ここに画像の説明を入力

于 2011-07-26T16:23:20.097 に答える