如何从图像中删除多余的透明像素
How to remove extra transparent pixels from an image
我有一系列的透明标识。我使用 PIL 将它们粘贴到 canvas 上。其中一些徽标具有额外的透明像素,使边界框太宽,如下所示:
但是,我需要这些徽标和边界框是这样的:
如何删除这些额外的、不必要的透明像素,以便边界框正确包裹徽标?
以下是一些徽标:
从 this answer 开始,您可以计算非零区域 (transparent/alpha) 的边界框,然后以编程方式裁剪它。
答案片段:
import Image
im = Image.open("test.bmp")
im.size # (364, 471)
im.getbbox() # (64, 89, 278, 267)
im2 = im.crop(im.getbbox())
im2.size # (214, 178)
im2.save("test2.bmp")
我有一系列的透明标识。我使用 PIL 将它们粘贴到 canvas 上。其中一些徽标具有额外的透明像素,使边界框太宽,如下所示:
但是,我需要这些徽标和边界框是这样的:
如何删除这些额外的、不必要的透明像素,以便边界框正确包裹徽标?
以下是一些徽标:
从 this answer 开始,您可以计算非零区域 (transparent/alpha) 的边界框,然后以编程方式裁剪它。
答案片段:
import Image
im = Image.open("test.bmp")
im.size # (364, 471)
im.getbbox() # (64, 89, 278, 267)
im2 = im.crop(im.getbbox())
im2.size # (214, 178)
im2.save("test2.bmp")