【问题标题】:How to remove extra transparent pixels from an image如何从图像中删除额外的透明像素
【发布时间】:2021-01-01 05:39:58
【问题描述】:

我有一系列透明徽标。我使用 PIL 将它们粘贴到画布上。其中一些徽标具有额外的透明像素,使边界框过宽,如下所示:

但是,我需要这些徽标和边界框是这样的:

如何去除这些多余的、不必要的透明像素,以便边界框正确包裹徽标?

以下是一些标志:

【问题讨论】:

  • 请分享有代表性的图片,说哪些没问题,哪些有问题,并分享你的代码。
  • @MarkSetchell 第二个没问题,第一个不行。具体是什么代码?目前,我没有任何删除额外透明度的代码。
  • 如果图像本身已经有额外的 alpha 区域,您可以使用任何图像编辑器对其进行裁剪
  • @Halmon 对,但我想用 Python 来做,因为我可以在这个目录中添加 100 个徽标,而且我不能手动裁剪所有徽标。我想以编程方式删除额外的透明度..

标签: python python-imaging-library


【解决方案1】:

this answer,您可以计算非零区域(透明/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")

【讨论】:

  • 当我尝试将裁剪后的徽标(来自您的代码)粘贴到画布上时,我收到此错误:text_img.paste(new_logo, (logo_position_x, logo_position_y), mask=new_logo)
  • @oo92 你的粘贴代码有错误吗?
  • 是的,我诊断出来了。原来一些图像的模式是LA。我尝试将它们转换为logo.convert(mode='RGBA'),但没有成功
猜你喜欢
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
  • 2013-09-19
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多