Skip to main content
 首页 » 编程设计

Python 如何将随机图像覆盖在正在生成的图像上以最终得到 2 个带文本的图像

2025年05月04日10Terrylee

这是我目前的代码。它所做的是从文本文件中获取随机文本行并生成随机颜色,然后创建 JPG 图像,文本位于顶部。我想要做的是随机拍摄一张图片并将其覆盖在纯色之上,不透明度可能为 0.2 或其他,然后将文本放在上面,所以我最终得到 > 纯色 > 图片覆盖 > 文本在上面。此代码生成多个图像。让文本也垂直居中会很好,但我不清楚如何做到这一点。

import Image, random, textwrap, ImageFont, ImageDraw, os, sys 
basepath = os.path.dirname(sys.argv[0]) + "/" 
 
for n in xrange(10): 
 
    keywordlist = [] 
    imglist = [] 
    keyword = file(basepath + "text.txt", "r") 
 
    for line in keyword: 
        keywordlist.append(line.replace("\n", "")) 
 
        def type(name): 
            value = name[random.randint(0,len(name)-1)] 
            return value 
 
    def random_color(): 
        return (random.randint(0,155), random.randint(0,155), random.randint(0,155)) 
 
    astr = ('%s' %(type(keywordlist))) 
    para = textwrap.wrap(astr,width=19) 
 
    MAX_W,MAX_H=640,400 
    im = Image.new('RGB', (MAX_W, MAX_H), (random_color())) 
    draw = ImageDraw.Draw(im) 
    font = ImageFont.truetype('C:/windows/fonts/Arialbd.ttf', 58) 
 
    current_h=0 
    for line in para: 
        w,h=draw.textsize(line, font=font) 
        draw.text(((MAX_W-w)/2, current_h), line, font=font,) 
        current_h+=h 
 
    im.save('img%000d.jpg' % n) 

这是输出示例:

请您参考如下方法:

使用the blend function :

new_image = Image.blend(solid_color_image, picture, 0.2)