Python PIL使用颜色轮廓填充图像

时间:2017-10-13 08:11:49

标签: python image python-imaging-library pillow

我有一张没有背景的PNG格式的图片。我想要做的是用黄色填充这个图像,直到边缘。图1是我的,图2是我想要的。 picture 1

enter image description here

我不确定如何实现这一目标或如何启动它。因为pic的背景和内部都是透明的。

我希望有一个函数,我可以告诉python找到边缘并填充内部直到边缘

{{1}}

1 个答案:

答案 0 :(得分:5)

就我而言,ImageDraw floodfill就像一个魅力。什么不适合你?

import os.path
import sys

from PIL import Image, ImageDraw, PILLOW_VERSION


def get_img_dir() -> str:
    pkg_dir = os.path.dirname(__file__)
    img_dir = os.path.join(pkg_dir, '..', '..', 'img')
    return img_dir


if __name__ == '__main__':
    input_img = os.path.join(get_img_dir(), 'star_transparent.png')
    image = Image.open(input_img)
    width, height = image.size
    center = (int(0.5 * width), int(0.5 * height))
    yellow = (255, 255, 0, 255)
    ImageDraw.floodfill(image, xy=center, value=yellow)
    output_img = os.path.join(get_img_dir(), 'star_yellow.png')
    image.save(output_img)

    print('Using Python version {}'.format(sys.version))
    print('Using Pillow version {}'.format(PILLOW_VERSION))

输出图片:

Output of the program above

版本信息:

Using Python version 3.6.2 (default, Aug  3 2017, 13:46:16) 
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)]
Using Pillow version 4.3.0