PNG จะไม่ครอบตัดอัตโนมัติโดยใช้ image.getbbox()

ฉันพยายามรับimage I want to cropรูปภาพนี้เพื่อครอบตัดให้มีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้โดยอัตโนมัติโดยลบออก บิตโปร่งใสที่อยู่รอบๆ ฉันไม่สามารถครอบตัดรูปภาพนี้ด้วยตนเองได้ เนื่องจากจะมีการเพิ่มสิ่งต่างๆ ลงในรูปภาพเช่นนี้ image I want to  ครอบตัดด้วยเช่นกัน

ฉันใช้รหัสนี้:

from PIL import Image, ImageChops

image=Image.open('headbase1.png')
image.load()

imageSize = image.size
imageBox = image.getbbox()
print(image.getbbox())
cropped=image.crop(imageBox)
cropped.save('headbase_end.png')

มันไม่ได้ครอบตัดความโปร่งใสรอบๆ และกรอบขอบคือ (0, 0, 45, 45) ซึ่งฉันไม่คิดว่าถูกต้อง

ขอบคุณ โหวต

แก้ไข ใช้งานได้: ครอบตัดรูปภาพโดยอัตโนมัติด้วย python/PIL ด้วยภาพนั้น แต่มันปฏิเสธที่จะทำงานเพื่อภาพของฉัน .


person VOT Productions    schedule 08.04.2015    source แหล่งที่มา
comment
ดูเหมือนว่าวิธี numpy จะใช้ไม่ได้เช่นกัน   -  person VOT Productions    schedule 08.04.2015


คำตอบ (1)


getbbox ใช้งานไม่ได้กับ PNG ที่มีช่องอัลฟ่า: image.mode == 'RGBA'

ขั้นแรกให้ลบช่องอัลฟ่าแล้วรับกล่องขอบเขต image.convert('RGB').getbbox()

person Dean Chen    schedule 16.07.2015