【教学类-69-01】20240721铠甲勇士扑克牌涂色(男孩篇)

背景需求:

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

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

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

删除一些半身像

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

单独测试1、10、Joker

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

素材准备:

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

代码展示:

'''
01铠甲勇士简笔画图(做成扑克牌) 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, PdfFileReaderfrom PIL import Image, ImageDraw, ImageFont
import os,randomprint('----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 + bprint(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个格子,两个数字都写4cell_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 PdfFileMergerpdf_output_path = path+fr'\\铠甲勇士{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个随机随机的扑克牌,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux-查看dd命令进度

查看dd命令进度 一、概述1. 在一个终端执行拷贝任务2. 在另一终端执行进度命令 一、概述 在使用 dd 命令做拷贝大量数据的时候,因为并没有输出,所以比较难判断当前进度,因此可以使用下面的命令作为进度查看 1. 在一个终端执行拷贝任务 例如…

直播带货|主播、运营怎么考核 怎么分钱

在直播公司中,有两个非常重要的岗位:直播运营和主播。那么,直播公司应该如何正确发放工资呢?许多公司为这两个岗位的工资发放采取的是销售额提成的方式。 销售额提成存在一个问题:直播公司很容易通过广告费来刺激销售额…

华为eNSP模拟器安装

文章目录 华为设备设备与VRP简介 华为设备设备与VRP简介 四大引擎 交换机 : 华为交换机: 目前分别为数据中心交换机,园区交换机,个人与中心企业交换机 主要用于满足不同企业规模的应用 大中小型网路对网路带宽,影响速度&#xf…

MT6825磁编码IC在智能食品包装设备的应用

艾毕胜马达控制平台专家 MT6825磁编码IC,作为一款先进的传感器解决方案,在智能食品包装设备中的应用正日益广泛 MT6825磁编码IC,作为一款先进的传感器解决方案,在智能食品包装设备中的应用正日益广泛。它凭借卓越的性能和可靠性…

Windows及Linux系统加固

君衍. 一、Windows加固1、配置简介2、账户配置3、本地配置4、安全设置 二、Linux加固1、配置简介2、网络配置3、日志和审计配置4、访问认证和授权配置5、系统运维配置 一、Windows加固 1、配置简介 通常在Windows安全配置中有两类对象 一类是Windows Server,如win …

功能测试与APPSCAN自动化测试结合的提高效率测试策略

背景 手工探索性测试(Manual Exploratory Testing,简称MET)是一种软件测试方法,它依赖于测试人员的直觉、经验和即兴发挥来探索应用程序或系统。与传统的脚本化测试相比,手工探索性测试不遵循固定的测试脚本&#xff0…

智能马桶的优点和缺点分别有哪些

智能马桶相比传统马桶,具有众多显著的优点,这些优点不仅提升了使用的舒适度,还增加了卫生性和便利性。以下是智能马桶的一些主要优点: 卫生性提升: 智能马桶通常配备有自动冲洗和座圈加热功能,避免了与冰冷…

npm下载包-更改默认缓存目录

npm(Node Package Manager)的缓存目录是npm用于存储已下载包的本地位置,以便在后续安装相同包时能够快速复用,从而节省时间和带宽。npm缓存目录的具体位置会根据操作系统的不同而有所差异。 Windows系统 在Windows系统中&#x…

敲详细的springboot中使用RabbitMQ的源码解析

这里介绍的源码主要是涉及springboot框架下的rabbitmq客户端代码(具体在springframework.amqp.rabbit包下,区分一下不由springboot直接接管的spring-rabbit的内容),springboot基于RabbitMQ的Java客户端建立了简便易用的框架。 sp…

重生之我在学数据结构——队列

一.队列的概念 队列是一种先进先出(First In First Out ,FIFO)的数据结构,可以简单理解为排队的概念。在队列中,数据项按照插入的顺序排列,并且只能在队列的一端插入(称为队尾),在另一端删除&a…

品牌策划新手指南:如何让你的品牌脱颖而出?

品牌策划,简单来说,就是为品牌制定一套全方位的成长和发展计划,就像给品牌设计一条成长路线图,让它能够更好地吸引顾客、建立信任、提升知名度,最终实现销售和市场份额的增长。 品牌策划是什么? 想象一下…

【前端】JavaScript入门及实战51-55

文章目录 51 函数52 函数的参数53 返回值54 练习55 return 51 函数 <!DOCTYPE html> <html> <head> <title></title> <meta charset "utf-8"> <script type"text/javascript">/* 函数&#xff1a;1. 函数也是…

PCI-X与PCI的优缺点

PCI-X总线改变了PCI总线使用的传送协议。目标设备可以将主设备发送的命令锁存&#xff0c;然后在下一个时钟周期进行译码操作。与PCI总线事务相比&#xff0c;PCI-X总线采用的这种方式&#xff0c;虽然在总线时序中多使用了一个时钟周期&#xff0c;但是可以有效提高PCI-X总线的…

【手撕数据结构】把玩顺序表

目录 顺序表介绍初始化顺序表销毁顺序表打印顺序表增加数据头插尾插指定位置下标插入 删除顺序表元素尾删头删指定位置删除 顺序表介绍 顺序表是⽤⼀段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;⼀般情况下采⽤数组 线性结构又是什么意思&#xff0c;这就…

【性能优化】在大批量数据下使用 HTML+CSS实现走马灯,防止页面卡顿(一)

切换效果 页面结构变化 1.需求背景 项目首页存有一个小的轮播模块,保密原因大概只能这么展示,左侧图片右侧文字,后端一次性返回几百条数据(开发环境下,生产环境只会更多).无法使用分页解决,前端需要懒加载防止页面卡顿 写个小demo演示,如下 2.解决思路 获取到数据后,取第一…

二、链表(2)

24. 两两交换链表中的节点 法一&#xff1a;迭代&#xff0c;while循环&#xff0c;注意要获取next给变量&#xff0c;得先判断非null, 需要4个变量&#xff0c; n0是前&#xff0c;n1 n2是交换的两&#xff0c;n3是n2的下一个可能为空&#xff0c;这种先把变量保存起来&#…

Leetcode1688. 比赛中的配对次数

问题描述&#xff1a; 给你一个整数 n &#xff0c;表示比赛中的队伍数。比赛遵循一种独特的赛制&#xff1a; 如果当前队伍数是 偶数 &#xff0c;那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛&#xff0c;且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇…

接口测试总结(非标准)

为什么要做接口测试&#xff1f; 答&#xff1a;接口测试是为了检测系统组件间接口的正确性和稳定性&#xff0c;以及检查数据的交换、传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。接口测试可以帮助我们发现系统中的潜在问题&#xff0c;确保系统的稳定性…

CSP-J模拟赛day1

yjq的吉祥数 文件读写 输入文件 a v o i d . i n avoid.in avoid.in 输出文件 a v o i d . o u t avoid.out avoid.out 限制 1000ms 512MB 题目描述 众所周知&#xff0c; 这个数字在有些时候不是很吉利&#xff0c;因为它谐音为 “散” 所以yjq认为只要是 的整数次幂的数…

JavaWeb连接(JDBC)数据库实现增删改查

JavaWeb连接(JDBC)数据库实现增删改查 1、数据库结构 (1)、创建数据库&#xff08;source_db&#xff09; (2)、创建数据表&#xff08;tb_source&#xff09;&#xff0c;结构如下 字段名说明字段类型长度备注id编号int主键&#xff0c;自增&#xff0c;增量为 1name名称v…