【教学类-69-01】20240721铠甲勇士扑克牌(随机14个数字+字母)涂色(男孩篇)

背景需求:

【教学类-68-01】20240720裙子涂色(女孩篇)-CSDN博客文章浏览阅读250次。【教学类-68-01】20240720裙子涂色(女孩篇)https://blog.csdn.net/reasonsummer/article/details/140578153

前期制作了女孩涂色延边剪用的裙子简笔画,现在想制作男孩感兴趣的图案,考虑到男孩手指精细动作不如女孩灵活,考虑设计”铠甲勇士扑克牌“,男孩只需要直线剪就可以了。

通义万相下载“铠甲勇士”简笔画

删除一些半身像

先用在图片左上角和右下角添加数字或字母,如果图像与数字字母有重叠,删除这个图片。

单独测试1、10、Joker

经过前面两次删除,99%勇士图都不会与左上角、右下角数字重叠,只找到一张盾牌与字母重叠的图片。

素材准备:

删除后的图片数量:144张,正好24张纸

代码展示:

'''
01铠甲勇士简笔画图(做成扑克牌)随机13+1张 6张
星火讯飞、通义万相、阿夏
2024年7月21日
'''

import os,time
import shutil
from docx import Document
from docx.shared import Cm
from PIL import Image
from PyPDF2 import PdfFileMerger, PdfFileReader

from PIL import Image, ImageDraw, ImageFont
import os,random

print('----1、铠甲勇士图片左上右下加扑克牌数字------------')
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20240717铠甲勇士'
origin_folder = path + r'\01图片'
image_folder = path + r'\02改图'
os.makedirs(image_folder, exist_ok=True)

image_files = [f for f in os.listdir(origin_folder) if f.endswith('.jpg') or f.endswith('.png')]

for image_file in image_files:
    image = Image.open(os.path.join(origin_folder, image_file))
    draw = ImageDraw.Draw(image)

    numbers1 = list(range(2, 11))
    numbers = [str(num) for num in numbers1]
    print(numbers)
    b = ['A', 'J', 'Q', 'K', 'Joker']
    
    number = numbers + b
    print(number)

    t = random.sample(number, 1)[0]
    print(t)

    zb = [[35,20],[910,870]]    # 普通坐标
    zb1 = [[35,20],[910,420]]   # joker坐标
    zb2 = [[35,20],[850,870]]   # 10的坐标
    for k in range(len(zb)):
        font = ImageFont.truetype('arial.ttf', 120)
        if t =='Joker':
            vertical_text = ''.join([char for char in str(t)])
            width, height = font.getsize(vertical_text)
            for i, char in enumerate(vertical_text):
                draw.text((zb1[k][0], zb1[k][1] + i * height), char, font=font, fill='black')
        
        else:
            if t =='10':
                draw.text((zb2[k][0], zb2[k][1]), str(t), font=font, fill='black')
            else:
                draw.text((zb[k][0], zb[k][1]), str(t), font=font, fill='black')

    image.save(os.path.join(image_folder, image_file))



print('----2、读取修图后的扑克牌图片,6------------')

image_files = [f for f in os.listdir(image_folder) if f.endswith('.jpg') or f.endswith('.png')]

# 将图片拆成6个一组
grouped_files = [image_files[i:i + 6] for i in range(0, len(image_files), 6)]
print(len(grouped_files))

# 创建临时文件夹
new_folder = path+r'\零时文件夹'
os.makedirs(new_folder, exist_ok=True)


# 处理每一组图片
for group_index, group in enumerate(grouped_files):
    # 创建新的Word文档
    doc = Document(path+r'\铠甲勇士模板6.docx')
    # print(group)
    
    # 遍历每个单元格,并插入图片
    for cell_index, image_file in enumerate(group):
        # 计算图片长宽(单位:厘米)
    
        # 插入图片到单元格
        table = doc.tables[0]
        cell = table.cell(int(cell_index / 3), cell_index % 3)
        # 如果第一行有4个格子,两个数字都写4
        cell_paragraph = cell.paragraphs[0]
        cell_paragraph.clear()
        run = cell_paragraph.add_run()
        run.add_picture(os.path.join(image_folder, image_file), width=Cm(9.42), height=Cm(9.75))
        
    # 保存Word文档
    doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))
    


# 将10个docx转为PDF
import os
from docx2pdf import convert
from PyPDF2 import PdfFileMerger

pdf_output_path = path+fr'\\01铠甲勇士扑克牌随机数字{int(len(grouped_files))}张共{len(image_files)}图.pdf'

# 将所有DOCX文件转换为PDF
for docx_file in os.listdir(new_folder):
    if docx_file.endswith('.docx'):
        docx_path = os.path.join(new_folder, docx_file)
        convert(docx_path, docx_path.replace('.docx', '.pdf'))


# 合并零时文件里所有PDF文件
merger = PdfFileMerger()
for pdf_file in os.listdir(new_folder):
    if pdf_file.endswith('.pdf'):
        pdf_path = os.path.join(new_folder, pdf_file)
        merger.append(pdf_path)
time.sleep(2)

# 保存合并后的PDF文件
merger.write(pdf_output_path)
merger.close()


# 删除输出文件夹

shutil.rmtree(new_folder)
shutil.rmtree(image_folder )
# shutil.rmtree(new)
time.sleep(2)

出现“改图”文件夹

左上角和右下角的扑克牌数字或大写字母都是随机抽取的。

制作扑克牌数字图,需要一段时间

扑克牌图片都做完了,出现“零时文件夹”,制作合并的docx和PDF

全部PDF制作后合并pdf,删除“02改图“和”零食文件夹“

每张A4有6个随机随机的扑克牌,

  • 34
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值