跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Python 图像文字艺术:用代码生成专属表白图

Python 利用 OpenCV 和 Pillow 库,通过读取图片像素颜色信息,将指定文字映射到对应位置,从而生成由文字组成的图像。教程涵盖环境准备、核心逻辑解析及完整代码实现,适合希望尝试创意编程的开发者。

WenxuanMa发布于 2020/5/19更新于 2026/9/1163 浏览
Python 图像文字艺术:用代码生成专属表白图

每到情人节或特殊纪念日,如何送出与众不同的惊喜往往是个难题。送花容易撞款,礼物难猜心意,不如尝试用代码创作一幅独一无二的作品——用文字拼贴出爱人的模样。

效果图展示

效果图展示

成品效果就是这样,由文字组成的图像。放大看细节,每个像素点其实都是一段文字。

效果图展示

准备工作

要实现这个效果,你需要以下基础环境:

  • 一张照片:最好是清晰的人像或风景照。
  • Python 环境:建议使用 Python 3.7 及以上版本。
  • 依赖库:
    • cv2 (OpenCV):用于读取图片像素信息。
    • PIL (Pillow):用于绘图和生成新图片。
  • 一台性能尚可的电脑:处理图片需要一定的计算资源。

注意:如果你不熟悉环境配置,或者担心本地运行效率问题,也可以考虑使用云端开发环境,但本地调试通常更灵活。

核心思路

原理并不复杂:读取原图的每一个像素点的颜色值,然后在一个新的空白画布上,按照相同的坐标位置填入文字,并将文字的颜色设置为对应像素的颜色。通过控制文字的密度(间隔),就能在视觉上还原出原图的轮廓。

代码实现

首先导入必要的库。这里我们封装了一个 draw 函数,方便重复调用。

import cv2
from PIL import Image, ImageDraw, ImageFont

def draw(pic, draw_text):
    # 读取原图,cv2 默认为 BGR 格式
    img = cv2.imread(pic)
    
    # 创建与源图尺寸一致的白色背景画布
    blank = Image.new("RGB", [img.shape[1], img.shape[0]], "white")
    drawObj = ImageDraw.Draw(blank)
    
    # 设置参数:n 为文字间隔,m 为字体大小
    n = 
    m = 
    
    font_path =  
    font = ImageFont.truetype(font_path, size=m)
    
    
     i  (, img.shape[], n):
         j  (, img.shape[], n):
            
            char = draw_text[(j / n) % (draw_text)]
            
            
            
            color = (img[i][j][], img[i][j][], img[i][j][])
            
            
            drawObj.text([j, i], char, fill=color, font=font)
    
    
    blank.save( + pic)



10
9
# 请修改为您本地的字体路径,例如 'C:/Windows/Fonts/simhei.ttf'
'你使用字体的位置'
# 遍历图片像素
for
in
range
0
0
for
in
range
0
1
# 确定当前要写入的文字字符
int
len
# 获取原图对应位置的颜色 (BGR -> RGB)
# OpenCV 读取的是 BGR,PIL 需要 RGB
2
1
0
# 绘制文字
# 保存结果
'img_'
# 调用示例:输入图片路径和目标文字
# draw('1.jpg', "我爱你")

关键点解析

  1. 颜色转换:OpenCV 读取的图片通道顺序是 BGR,而 Pillow 绘图期望 RGB。代码中 (img[i][j][2], img[i][j][1], img[i][j][0]) 这一步就是为了纠正通道顺序,否则颜色会发灰或偏色。
  2. 文字密度:变量 n 决定了文字之间的间隔。如果 n 太小,文字会重叠看不清;如果太大,图像细节会丢失。根据图片分辨率调整这个值,通常 10 左右比较合适。
  3. 字体选择:代码中的 font_path 必须指向系统中真实存在的字体文件。如果没有指定,程序会报错。建议选用笔画清晰的字体,如黑体或宋体。

进阶思考

既然已经掌握了将静态图片转换为文字图的方法,不妨进一步思考:能否将这些帧连接起来制作成视频?当然可以。这涉及到对视频流的逐帧处理,逻辑与上述类似,只是增加了时间维度的循环。有兴趣的开发者可以尝试扩展此功能,让表白更加动态化。

目录

  1. 准备工作
  2. 核心思路
  3. 代码实现
  4. 调用示例:输入图片路径和目标文字
  5. draw('1.jpg', "我爱你")
  6. 关键点解析
  7. 进阶思考

更多推荐文章

查看全部
  • 多模态大模型 MLLM 的架构发展与思考
  • 普通人如何利用 AI 技术实现价值变现与职业转型
  • 基于 Python 的保险行业数据可视化分析系统
  • 大模型应用中提升 RAG 检索增强生成能力的实践方法
  • 双指针算法进阶:从三角形到多数之和
  • 链表核心算法实战:移除元素与合并有序链表详解
  • 人工智能学习指南:从基础语法到大模型实战
  • Claude AI 注册流程及海外手机号验证解决方案
  • MCP 详解:连接 AI 与外部工具的标准协议
  • 基于 Docker 的 Web 应用一键打包为 Android APK 方案
  • VSCode 关闭 Copilot 代码补全操作指南
  • 非科班出身:工作十年后转行程序员,35 岁依然不焦虑
  • OpenClaw 开源 AI 智能体框架:架构、应用与安全分析
  • SRC 漏洞挖掘经验分享
  • 自然语言处理在教育领域的应用与实战
  • C++ 笔试刷题:排序子序列、消减整数与最长上升子序列
  • Python 核心应用领域与职业发展方向详解
  • 企业微信群机器人发送 Markdown 消息及表格支持
  • 两两交换链表中的节点
  • OpenClaw 接入飞书机器人配置指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online