Python如何在生成的图像上叠加随机图像,最终得到2个带文本的图像

时间:2013-01-06 20:39:55

标签: python image python-imaging-library

这是我到目前为止的代码。它的作用是从文本文件中抓取一个随机文本行,生成一个随机颜色,然后创建顶部带有文本的JPG图像。我想要做的是拍摄一张随机图片并将其叠加在纯色上面,不透明度可能是0.2或者其他什么,然后将文字置于其上面,所以我最终得到了&gt; <纯色>图片重叠&gt;文字在上面。此代码生成多个图像。将文本垂直居中也很好,但我不清楚如何做到这一点。

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)

以下是输出示例:

Example

1 个答案:

答案 0 :(得分:0)

使用the blend function

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