需求:将文件夹中的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.二维码图片,生成的编号图片,拼接的图片示例