将一张图片以自己输入文字方式组成

from PIL import Image, ImageDraw, ImageFont

origin_name='D:\python测试\\3.jpg'#原图片名
dst_name='D:\python测试\\222.jpg'#目标图片名


CHILD_W = CHILD_H = 16
txt = '您好' # 内容组成
font = ImageFont.truetype("D:\python测试\Alibaba-PuHuiTi-Bold.ttf", CHILD_W)  # 字体及大小

if __name__ == '__main__':
    imgSrc = Image.open(origin_name)  # 打开原图像
    w, h = imgSrc.size  # 原图像宽高

    imageChild = Image.new("RGB", (CHILD_W, CHILD_H))  # 新建子图
    imageDst = Image.new("RGB", (CHILD_W * w, CHILD_H * h))  # 新建子图

    textW, textH = font.getsize("迷")  # 取单个文字的宽高信息
    offsetX = (CHILD_W - textW) >> 1  # 居中
    offsetY = (CHILD_H - textH) >> 1

    charIndex = 0  # 记录文字下标
    draw = ImageDraw.Draw(imageChild)  # 取最小绘图对象,用于绘制文字

    for y in range(h):
        for x in range(w):
            draw.rectangle((0, 0, CHILD_W, CHILD_H), fill="lightgray")

            draw.text((offsetX, offsetY), txt[charIndex], font=font, fill=imgSrc.getpixel((x, y)))
            imageDst.paste(imageChild,(x*CHILD_W,y*CHILD_H) )

            charIndex=(charIndex+1)%len(txt)

    imageDst.save(dst_name)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值