我帮你写了一个文创产品图案随机生成器,用Python+PIL实现风格化图案生成,支持手机壳/贴纸导出,模块化设计注释清晰,附README、使用说明和核心知识点卡片,直接可用。
文创产品图案随机生成器
一、Python代码实现
import random import argparse from PIL import Image, ImageDraw, ImageFont import os
def load_design_config(): """ 加载文创图案设计配置(风格-元素-色彩映射) 返回:嵌套字典,包含风格库、元素库及对应视觉要素 """ return { "风格库": { "国潮": { "基础色彩": ["#C3272B", "#D4AF37", "#000000"], # 朱砂红/鎏金/墨黑 "构图规则": "中心对称+传统纹样点缀" }, "复古": { "基础色彩": ["#8B4513", "#722F37", "#F5DEB3"], # 焦糖棕/酒红/米黄 "构图规则": "不对称怀旧布局+做旧肌理" }, "极简": { "基础色彩": ["#F5F5F5", "#808080", "#D2B48C"], # 米白/浅灰/原木色 "构图规则": "大量留白+线性元素主导" } }, "元素库": { "花鸟": { "国潮": ["牡丹", "凤凰", "燕子", "缠枝纹"], "复古": ["玫瑰", "鹦鹉", "藤蔓", "老花边"], "极简": ["单枝花", "飞鸟轮廓", "叶脉线条"] }, "几何": { "国潮": ["云纹方块", "回纹三角", "方胜纹"], "复古": ["Art Deco线条", "圆形波点", "菱形格"], "极简": ["三角形拼接", "矩形渐变", "同心圆"] }, "文字": { "国潮": ["书法字", "印章文", "篆书短句"], "复古": ["老宋体", "英文花体", "数字艺术字"], "极简": ["无衬线字", "细笔画字", "字母组合"] } }, "产品规格": { "手机壳": (1080, 2400), # 主流安卓手机比例 "贴纸": (500, 500) # 方形贴纸通用尺寸 } }
def parse_user_input(style, element): """ 标准化用户输入(去空格+首字母大写) 参数:style-风格输入,element-元素输入 返回:(标准化风格, 标准化元素) """ return style.strip().capitalize(), element.strip().capitalize()
def validate_input(style, element, config): """ 校验输入是否在配置范围内 返回:True/False + 错误提示 """ if style not in config["风格库"]: return False, f"风格仅支持:{list(config['风格库'].keys())}" if element not in config["元素库"]: return False, f"元素仅支持:{list(config['元素库'].keys())}" return True, ""
def generate_pattern(style, element, config): """ 核心图案生成逻辑:按风格+元素随机组合视觉要素 参数:风格/元素名称,配置字典 返回:PIL Image对象(图案画布) """ # 1. 获取基础配置 style_cfg = config["风格库"][style] elem_pool = config["元素库"][element][style] width, height = config["产品规格"]["手机壳"] # 默认生成手机壳尺寸
# 2. 创建画布(带底色)
img = Image.new("RGB", (width, height), style_cfg["基础色彩"][2])
draw = ImageDraw.Draw(img)
# 3. 随机选取元素组合(2-3个元素)
selected_elems = random.sample(elem_pool, k=random.randint(2, 3))
# 4. 按风格规则绘制元素(简化版示意)
for i, elem in enumerate(selected_elems):
x = random.randint(100, width-200)
y = random.randint(200, height-300)
color = random.choice(style_cfg["基础色彩"][:2]) # 选前2个主色
# 模拟不同元素绘制(实际项目可替换为矢量图形)
if "纹" in elem or "线条" in elem:
draw.line([(x,y), (x+150,y)], fill=color, width=3)
elif "字" in elem:
font = ImageFont.truetype("simhei.ttf", 40) # 需系统有黑体
draw.text((x,y), elem[:2], fill=color, font=font)
else: # 图形类元素
draw.ellipse([x,y,x+80,y+80], outline=color, width=2)
return img
def export_images(img, style, element, config): """ 导出高清图案(手机壳+贴纸双尺寸) 参数:生成的Image对象,风格/元素名,配置字典 返回:导出的文件路径列表 """ output_dir = "文创图案输出" os.makedirs(output_dir, exist_ok=True) paths = []
# 生成两种产品尺寸
for product, size in config["产品规格"].items():
resized_img = img.resize(size, Image.Resampling.LANCZOS) # 高清缩放
path = f"{output_dir}/{style}_{element}_{product}.png"
resized_img.save(path, dpi=(300, 300)) # 300dpi高清导出
paths.append(path)
return paths
def main(): """程序入口:解析参数→生成图案→导出结果""" parser = argparse.ArgumentParser(description="文创图案随机生成器(风格+元素→手机壳/贴纸)") parser.add_argument("--style", required=True, help="风格(国潮/复古/极简)") parser.add_argument("--element", required=True, help="元素(花鸟/几何/文字)") args = parser.parse_args()
# 加载配置与校验输入
config = load_design_config()
style, element = parse_user_input(args.style, args.element)
is_valid, err_msg = validate_input(style, element, config)
if not is_valid:
print(f"❌ 输入错误:{err_msg}")
return
# 生成图案并导出
pattern_img = generate_pattern(style, element, config)
export_paths = export_images(pattern_img, style, element, config)
# 输出结果
print(f"\n✨ 生成成功!文件已保存至:")
for path in export_paths:
print(f"📁 {path}")
if name == "main": main()
二、README文件内容
文创产品图案随机生成器
简介
本工具通过风格(国潮/复古/极简)+元素(花鸟/几何/文字) 组合,随机生成文创图案,支持手机壳(1080×2400)、贴纸(500×500)双尺寸高清导出(300dpi),解决设计师灵感枯竭问题。基于Python+PIL开发,模块化设计易扩展。
安装要求
- Python 3.8+
- 依赖库:
pip install pillow
使用方法
1. 命令行模式(推荐)
bash
python pattern_generator.py --style 国潮 --element 花鸟
2. 参数说明
--style:必填,可选【国潮/复古/极简】--element:必填,可选【花鸟/几何/文字】
示例输出
输入:--style 复古 --element 几何
输出:
✨ 生成成功!文件已保存至:
📁 文创图案输出/复古几何手机壳.png
📁 文创图案输出/复古几何贴纸.png
扩展说明
- 添加新风格:修改
load_design_config()的"风格库",新增键值对(如"赛博朋克") - 丰富元素库:在"元素库"下对应风格中添加新元素(如国潮花鸟加"锦鲤")
- 优化绘制逻辑:替换
generate_pattern()中的简化绘制代码为SVG矢量渲染(需额外库)
注意事项
- 文字绘制需系统安装黑体(simhei.ttf),缺失时可替换为其他字体路径
- 输出目录自动创建为"文创图案输出",重复运行会覆盖同名文件
许可证
MIT License
三、使用说明
- 环境准备:
- 安装Python 3.8+,执行 "pip install pillow"安装依赖
- 运行工具:
- 命令行传参: "python pattern_generator.py --style 极简 --element 文字"
- 查看输出:当前目录下"文创图案输出"文件夹含手机壳/贴纸PNG图
- 自定义扩展:
- 编辑 "load_design_config()"函数,在"风格库"/"元素库"中添加新条目
四、核心知识点卡片
- PIL图像处理:用 "Image"创建画布、 "ImageDraw"绘制元素、 "resize"高清缩放
- 配置驱动设计:通过嵌套字典管理风格-元素-色彩映射,实现灵活扩展
- 随机模块应用: "random.sample"选元素、 "random.choice"选色彩,保证多样性
- 模块化函数:拆分配置加载、输入校验、图案生成、导出为独立函数
- 高清导出: "save(dpi=(300,300))"确保印刷级清晰度, "LANCZOS"重采样抗锯齿
- 命令行解析: "argparse"处理必填参数( "--style"/ "--element"),提升易用性
- 异常处理:输入校验函数返回错误提示,避免无效生成 关注我,有更多实用程序等着你!