如何从图像中删除多余的透明像素

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")