1。目的

在这篇文章中,我将演示如何创建具有透明背景的图像,如下所示:

2. 环境

  • Python3

3.代码

3.1 项目目录结构

我们的工作目录名称是 myscript,结构如下:

.
└── myscripts/
    ├── images/
    │   ├── readme.txt
    └── generate_png_transparent_demo.py

说明:

  • images 目录存储我们创建的图片
  • generate_png_transparent_demo.py是程序文件

3.2 函数

generate_png_transparent_demo.py中的核心函数:

from PIL import Image,ImageDraw

# define the size of the image
DEFAULT_WIDTH = 200
DEFAULT_HEIGHT = 80

# this function contains three parameters# 1) image_file_name , the file name to create# 2) the_text, is the text which would ben drawn on the image# 3) alpha, the alpha value that control the image background transparencydefgenerate_png_transparent(image_file_name,the_text,alpha=0):
  
    # First, we create an image with RGBA mode, the 'A' stands for alpha# the last parameter (255,0,0,alpha) means (R,G,B,A), so the image background color is RED
    img = Image.new("RGBA",(DEFAULT_WIDTH,DEFAULT_HEIGHT),(255,0,0,alpha))
    
    # Now we start to draw text on the image
    d = ImageDraw.Draw(img)
    # the text start at position (20,25), and the color is green
    d.text((20,25), the_text, fill=(0, 0, 255))

    # Then we save and show the image
    img.save(image_file_name,'PNG')
    img.show(image_file_name)
    pass

更多关于图像中的 alpha 值:

在数字图像中,每个像素都包含颜色信息(例如描述红色、绿色和蓝色强度),还包含一个称为“ alpha ”值的不透明度alpha 值为1 表示完全不透明,alpha值为0 表示完全透明

3.3 main函数

现在我们应该为用户提供一个启动程序的主要功能:

if __name__ == '__main__':
    generate_png_transparent("./images/a.png","hello world alpha 0",0)
    generate_png_transparent("./images/b.png", "hello world alpha 50", 50)
    generate_png_transparent("./images/c.png", "hello world alpha 100", 100)

3.4 测试

最后,我们可以测试我们的水印功能,如下所示:

 $ python generate_png_transparent_demo.py

有用!