pythonpil模块将图片旋转并按规律拼接成一张长图

本文介绍了一种使用Python的PIL库批量处理二维码的方法,包括生成长图、读取并拼接二维码、生成及旋转二维码编号图片,最终实现100个二维码的有序排列与编号显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:将文件夹中的100个二维码按规律进行拼接,并且将每个二维码编号放置在二维码旁边

1.先生成一张符合尺寸的长图

img = Image.new("RGBA",(60120,600))
img.save("E:/qr_png/test/test1.png")

2.读取二维码,其中有屌用其他处理函数,稍后会提到

def function1():
    img = Image.open("E:/qr_png/test/test1.png")
    path = 'E:/qr_png/jpg_code/B'
    path_list = os.listdir(path)
    i = 90
    # j = 570
    n = 1
    for filename in path_list:
        icon = Image.open("E:/qr_png/jpg_code/B/{}".format(filename))
        deal_number(filename)
        rotate_bound2()
        paste(filename)
        icon_number = Image.open("E:/qr_png/test/code_img_str_90.png")
        img.paste(icon_number, (i, 75), mask=None)
        if n == 50:
            print (filename)
            i += 600
        else:
            i += 600
        n += 1
        print (i)
    # 保存图片
    img.save("E:/qr_png/test/0601-B.png")

3.生成二维码编号的图片,并进行旋转

def deal_number(filename):
    # color = "White"
    # str1 = '000-01-001'
    img_str = Image.new("RGBA",(369,120))
    img_str.save("E:/qr_png/test/img_str.png")
    im = Image.open("E:/qr_png/test/img_str.png")
    font = ImageFont.truetype('simsun.ttc',71)
    draw = ImageDraw.Draw(im)
    # draw.line((0, 0) + im.size, fill=128)
    # draw.line((0, im.size[1], im.size[0], 0), fill=128)
    draw.text((10,20), filename, font=font, fill='#000')
    im.save("E:/qr_png/test/img_str.png")

def rotate_bound2():
    im = Image.open('E:/qr_png/test/img_str.png')
    out = im.transpose(Image.ROTATE_270)
    # out = im.rotate(-90)
    out.save('E:/qr_png/test/img_str_90.png')

4.将二维码图片与编号图片进行拼接

def paste(filename):
    target = Image.new("RGBA",(489,369))
    qr = Image.open("E:/qr_png/jpg_code/B/{}".format(filename))
    im = Image.open('E:/qr_png/test/img_str_90.png')
    # qr.paste(im, (-120, 0))
    # qr.save("E:/qr_png/test/0529.jpg")
    a = 120  # 图片距离左边的大小
    b = 0  # 图片距离上边的大小
    c = 489  # 图片距离左边的大小 + 图片自身宽度
    d = 369  # 图片距离上边的大小 + 图片自身高度
    target.paste(qr, (a, b, c, d))
    e = 0
    f = 0
    g = 120
    h = 369
    target.paste(im, (e, f, g, h))
    target.save("E:/qr_png/test/code_img_str_90.png")
    print ("已拼接")

5.二维码图片,生成的编号图片,拼接的图片示例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值