当前位置: 首页 > news >正文

拼豆设计生成器(支持大写字母、数字,颜色自定义)

拼豆设计生成器(Perler Bead Pattern Generator)

这是一个用 Python 编写的简易拼豆图案生成工具,可根据输入的英文字母与数字自动生成对应的 5×5 像素化拼豆模板图,并导出为高清 PNG 文件。

运行环境

  • Python ≥ 3.7
  • 依赖库:
    pip install matplotlib numpy
    

运行后在终端的输入输出:

=== 拼豆设计生成器 ===
请输入要生成的文本:
2025
请输入拼豆颜色(十六进制代码,例如#E08E3F,直接回车使用默认颜色):
#FF4500
正在生成拼豆设计...
设计已保存为 bead_design_2025.png

在这里插入图片描述


import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Rectangle# 定义字母的5x5网格表示
# 1表示放置拼豆,0表示不放置
characters = {# 大写字母'A': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 1, 1, 1, 1],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1]],'B': [[1, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 1, 1, 1, 0]],'C': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 0, 0, 0, 0],[1, 0, 0, 0, 1],[0, 1, 1, 1, 0]],'D': [[1, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[1, 1, 1, 1, 0]],'E': [[1, 1, 1, 1, 1],[1, 0, 0, 0, 0],[1, 1, 1, 1, 0],[1, 0, 0, 0, 0],[1, 1, 1, 1, 1]],'F': [[1, 1, 1, 1, 1],[1, 0, 0, 0, 0],[1, 1, 1, 1, 0],[1, 0, 0, 0, 0],[1, 0, 0, 0, 0]],'G': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 0],[1, 0, 1, 1, 1],[1, 0, 0, 0, 1],[0, 1, 1, 1, 0]],'H': [[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[1, 1, 1, 1, 1],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1]],'I': [[1, 1, 1, 1, 1],[0, 0, 1, 0, 0],[0, 0, 1, 0, 0],[0, 0, 1, 0, 0],[1, 1, 1, 1, 1]],'J': [[0, 0, 1, 1, 1],[0, 0, 0, 1, 0],[0, 0, 0, 1, 0],[1, 0, 0, 1, 0],[0, 1, 1, 0, 0]],'K': [[1, 0, 0, 0, 1],[1, 0, 0, 1, 0],[1, 1, 1, 0, 0],[1, 0, 0, 1, 0],[1, 0, 0, 0, 1]],'L': [[1, 0, 0, 0, 0],[1, 0, 0, 0, 0],[1, 0, 0, 0, 0],[1, 0, 0, 0, 0],[1, 1, 1, 1, 1]],'M': [[1, 0, 0, 0, 1],[1, 1, 0, 1, 1],[1, 0, 1, 0, 1],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1]],'N': [[1, 0, 0, 0, 1],[1, 1, 0, 0, 1],[1, 0, 1, 0, 1],[1, 0, 0, 1, 1],[1, 0, 0, 0, 1]],'O': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[0, 1, 1, 1, 0]],'P': [[1, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 1, 1, 1, 0],[1, 0, 0, 0, 0],[1, 0, 0, 0, 0]],'Q': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 0, 1, 0, 1],[1, 0, 0, 1, 1],[0, 1, 1, 1, 1]],'R': [[1, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 1, 1, 1, 0],[1, 0, 0, 1, 0],[1, 0, 0, 0, 1]],'S': [[0, 1, 1, 1, 1],[1, 0, 0, 0, 0],[0, 1, 1, 1, 0],[0, 0, 0, 0, 1],[1, 1, 1, 1, 0]],'T': [[1, 1, 1, 1, 1],[0, 0, 1, 0, 0],[0, 0, 1, 0, 0],[0, 0, 1, 0, 0],[0, 0, 1, 0, 0]],'U': [[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[0, 1, 1, 1, 0]],'V': [[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[0, 1, 0, 1, 0],[0, 0, 1, 0, 0]],'W': [[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[1, 0, 1, 0, 1],[1, 1, 0, 1, 1],[1, 0, 0, 0, 1]],'X': [[1, 0, 0, 0, 1],[0, 1, 0, 1, 0],[0, 0, 1, 0, 0],[0, 1, 0, 1, 0],[1, 0, 0, 0, 1]],'Y': [[1, 0, 0, 0, 1],[0, 1, 0, 1, 0],[0, 0, 1, 0, 0],[0, 0, 1, 0, 0],[0, 0, 1, 0, 0]],'Z': [[1, 1, 1, 1, 1],[0, 0, 0, 1, 0],[0, 0, 1, 0, 0],[0, 1, 0, 0, 0],[1, 1, 1, 1, 1]],# 数字'0': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[0, 1, 1, 1, 0]],'1': [[0, 0, 1, 0, 0],[0, 1, 1, 0, 0],[0, 0, 1, 0, 0],[0, 0, 1, 0, 0],[0, 1, 1, 1, 0]],'2': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 1],[0, 0, 1, 1, 0],[0, 1, 0, 0, 0],[1, 1, 1, 1, 1]],'3': [[1, 1, 1, 1, 0],[0, 0, 0, 0, 1],[0, 1, 1, 1, 0],[0, 0, 0, 0, 1],[1, 1, 1, 1, 0]],'4': [[0, 0, 1, 1, 0],[0, 1, 0, 1, 0],[1, 0, 0, 1, 0],[1, 1, 1, 1, 1],[0, 0, 0, 1, 0]],'5': [[1, 1, 1, 1, 1],[1, 0, 0, 0, 0],[1, 1, 1, 1, 0],[0, 0, 0, 0, 1],[1, 1, 1, 1, 0]],'6': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 0],[1, 1, 1, 1, 0],[1, 0, 0, 0, 1],[0, 1, 1, 1, 0]],'7': [[1, 1, 1, 1, 1],[0, 0, 0, 0, 1],[0, 0, 0, 1, 0],[0, 0, 1, 0, 0],[0, 1, 0, 0, 0]],'8': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 1],[0, 1, 1, 1, 0],[1, 0, 0, 0, 1],[0, 1, 1, 1, 0]],'9': [[0, 1, 1, 1, 0],[1, 0, 0, 0, 1],[0, 1, 1, 1, 1],[0, 0, 0, 0, 1],[0, 1, 1, 1, 0]]}def create_bead_design(text, bead_color='#E08E3F', background_color='#F5F5DC'):"""创建拼豆设计参数:text: 要显示的文本bead_color: 拼豆的颜色 (十六进制代码)background_color: 背景颜色 (十六进制代码)"""# 创建图形fig, ax = plt.subplots(figsize=(max(6, len(text) * 0.6), 3))ax.set_aspect('equal')ax.axis('off')# 设置背景颜色fig.patch.set_facecolor(background_color)def draw_bead(x, y, color=bead_color):"""绘制单个拼豆"""rect = Rectangle((x, y), 0.9, 0.9, facecolor=color, edgecolor='#000000', linewidth=0.5)ax.add_patch(rect)def draw_text(text, start_x, start_y):"""绘制文字"""x_offset = start_xfor char in text:if char in characters:grid = characters[char]for y in range(5):for x in range(5):if grid[4-y][x] == 1:  # 反转y轴以使字母正立draw_bead(x_offset + x, start_y + y)x_offset += 6  # 5个格子 + 1个间隔else:# 如果字符未定义,使用空格x_offset += 6# 绘制文本draw_text(text.upper(), 0, 0)# 计算总宽度total_width = len(text) * 6 - 1# 设置坐标轴范围plt.xlim(-1, total_width + 1)plt.ylim(-1, 6)# 添加说明文字plt.tight_layout()return figdef main():"""主函数,获取用户输入并生成拼豆设计"""print("=== 拼豆设计生成器 ===")print("请输入要生成的文本:")text = input().strip()print("请输入拼豆颜色(十六进制代码,例如#E08E3F,直接回车使用默认颜色):")color_input = input().strip()bead_color = color_input if color_input else '#E08E3F'print("正在生成拼豆设计...")# 生成设计fig = create_bead_design(text, bead_color)# 保存图像filename = f"bead_design_{text.replace(' ', '_')}.png"plt.savefig(filename, dpi=300, bbox_inches='tight')print(f"设计已保存为 {filename}")# 显示图像plt.show()if __name__ == "__main__":main()
http://www.dtcms.com/a/346912.html

相关文章:

  • 力扣 30 天 JavaScript 挑战 第38天 (第九题)学习了 语句表达式的区别 高级函数 promise async await 节流
  • 三、Bpmnjs 核心组件与架构介绍
  • 深入剖析结构体内存对齐
  • 达梦数据库巡检常用SQL(一)
  • Base64 编码优化 Web 图片加载:异步响应式架构(Java 后端 + 前端全流程实现)
  • Linux问答题:分析和存储日志
  • [特殊字符] 在 Windows 新电脑上配置 GitHub SSH 的完整记录(含坑点与解决方案)
  • JUC之AQS
  • csrf漏洞学习笔记
  • C++ 20: Concepts 与Requires
  • 告别SaaS数据绑架,拥抱数据主权:XK+独立部署版跨境商城定制,为海外物流企业深度赋能
  • CentOS创建管理员用户feixue并设置密码全教程
  • 【c++进阶系列】:万字详解多态
  • 快速掌握Java非线性数据结构:树(二叉树、平衡二叉树、多路平衡树)、堆、图【算法必备】
  • STM32学习笔记19-WDG
  • linux shell测试函数
  • 百度深度学习面试:batch_size的选择问题
  • Linux总线设备驱动模型深度理解
  • 玩转Vue3高级特性:Teleport、Suspense与自定义渲染
  • 内联函数是什么以及的优点和缺点
  • ICP语序文字点选验证逆向分析(含Py纯算源码)
  • 基于SpringBoot+vue校园点餐系统
  • 【升级版】从零到一训练一个 0.6B 的 MoE 大语言模型
  • RabbitMQ面试精讲 Day 28:Docker与Kubernetes部署实践
  • JAVA核心基础篇-枚举
  • 【Linux网络编程】分布式Json-RPC框架 - 项目设计
  • Java试题-选择题(16)
  • 2025年渗透测试面试题总结-29(题目+回答)
  • 基于ResNet50的血细胞图像分类模型训练全记录
  • 2025-08-23 李沐深度学习19——长短期记忆网络LSTM