8

境界線の白い部分を切り取って、画像を小さいサイズにトリミングしたいと思います。このフォーラムで提案されている解決策を試しました。PNG画像を最小サイズにトリミングしますが、pilのgetbbox()メソッドは、同じサイズの画像のバウンディングボックスを返します。つまり、空白の領域を認識しないようです。その周り。私は次のことを試しました:

>>>import Image
>>>im=Image.open("myfile.png")
>>>print im.format, im.size, im.mode
>>>print im.getbbox()
PNG (2400,1800) RGBA
(0,0,2400,1800)

GIMP自動トリミングで画像をトリミングして、画像に真っ白なトリミング可能な境界線があることを確認しました。また、運が悪かったので、図のpsバージョンとepsバージョンを試してみました。
どんな助けでも大歓迎です。

4

1 に答える 1

21

問題はgetbbox()、ドキュメントからの黒い境界線からの切り抜きですCalculates the bounding box of the non-zero regions in the image

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

import Image    
im=Image.open("flowers_white_border.jpg")
print im.format, im.size, im.mode
print im.getbbox()
# white border output:
JPEG (300, 225) RGB
(0, 0, 300, 225)

im=Image.open("flowers_black_border.jpg")
print im.format, im.size, im.mode
print im.getbbox()
# black border output:
JPEG (300, 225) RGB
(16, 16, 288, 216) # cropped as desired

ImageOps.invert最初にを使用して画像を反転し、次にgetbbox():を使用することで、白い境界線を簡単に修正できます。

import ImageOps
im=Image.open("flowers_white_border.jpg")
invert_im = ImageOps.invert(im)
print invert_im.getbbox()
# output:
(16, 16, 288, 216)
于 2012-03-26T14:46:10.637 に答える