Python实现图片转字符画的示例代码

认真发呆
认真发呆
发布时间:2026-10-10| 6人浏览过
原创

本文介绍如何使用Python的PIL库将图片转换为字符画。核心原理是将图片像素的灰度值映射到特定的字符集。文章提供了两种实现方法:先将图片转为黑白模式再映射,或直接计算RGB灰度值后映射。通过调整图片尺寸和字符集,生成对应的文本文件。

核心原理与准备工作

将图片转换为字符画的关键在于建立图像灰度值与可见字符之间的映射关系。具体步骤包括:利用Python的PIL库(Python Imaging Library)读取图像,获取每个像素点的颜色信息,计算其灰度值,然后根据预设的字符集将不同区间的灰度值替换为对应的字符。最终将这些字符按原图尺寸排列输出,即可在文本编辑器中还原出图像轮廓。

实现方法

根据处理图像的方式不同,主要有两种实现路径:

方法一:黑白模式转换

首先将彩色图片转换为黑白(灰度)模式,然后直接读取每个像素的灰度值。这种方法简化了颜色处理,直接利用灰度值在字符集中查找对应的字符。

方法二:RGB灰度计算

直接获取图像的RGB值,利用灰度转换公式计算每个像素的灰度值。公式为:Gray = R*0.299 + G*0.587 + B*0.114。计算得到灰度值后,同样建立其与字符集的映射关系,生成字符画。

代码实现

以下是完整的Python示例代码,包含字符集定义、两种转换方法以及文件输出逻辑:

# -*- coding: utf-8 -*-
from PIL import Image

codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\|()1{}[]#-_+~<>i!lI;:,"^`'. '''#生成字符画所需的字符集
count = len(codeLib)

def transform1(image_file):
  image_file = image_file.convert("L")#转换为黑白图片,参数"L"表示黑白模式
  codePic = ''
  for h in range(0,image_file.size[1]): #size属性表示图片的分辨率,'0'为横向大小,'1'为纵向
    for w in range(0,image_file.size[0]):
      gray = image_file.getpixel((w,h)) #返回指定位置的像素,如果所打开的图像是多层次的图片,那这个方法就返回一个元组
      codePic = codePic + codeLib[int(((count-1)*gray)/256)]#建立灰度与字符集的映射
    codePic = codePic+'\r\n'
  return codePic

def transform2(image_file):
  codePic = ''
  for h in range(0,image_file.size[1]):
    for w in range(0,image_file.size[0]):
      g,r,b = image_file.getpixel((w,h))
      gray = int(r* 0.299+g* 0.587+b* 0.114)
      codePic = codePic + codeLib[int(((count-1)*gray)/256)]
    codePic = codePic+'\r\n'
  return codePic


fp = open(u'暴走.jpg','rb')
image_file = Image.open(fp)
image_file=image_file.resize((int(image_file.size[0]*0.75), int(image_file.size[1]*0.5)))#调整图片大小
print u'Info:',image_file.size[0],' ',image_file.size[1],' ',count

tmp = open('tmp.txt','w')
tmp.write(transform1(image_file))
tmp.close()

注意事项

在查看生成的字符画时,建议使用记事本或其他文本编辑器打开生成的txt文件。为了确保字符对齐,显示效果最佳,请在编辑器中取消自动换行功能,并设置合适的字体(如宋体)和字号(如小六)。此外,代码中通过resize方法调整了图片尺寸,以适配终端或文本编辑器的显示宽度。

以上就是Python实现图片转字符画的详细内容,更多关于Python图像处理、PIL库使用、字符画生成的资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。