文章目录

  • 简介
  • 绘制方法
  • 代码实现

简介

位图图片是由不同颜色像素点组成的规则分布,如果使用字符代替像素点,那么图像就可以称之为字符画。
本文将为各位读者介绍如何将图片转换成投资度组成的字符画

绘制方法

首先需要定义一个字符集,以便于替换图像中的像素点,字符种类越多,便越能够还原原图的色彩变化,图片也越能够富有层次感。
下面就是一个简单的字符集定义。

ascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-/+@<>i!;:,\^`.')

由于字符只能描述原图的深浅而无法还原图片的颜色,因此原图还需要转换成高质量的黑白文稿。
为了使得图片字符画达到最佳效果,可以使用PIL库中的resize函数达到重新设计大小的目的。
字符画也能够更加美观,这里提供一个小技巧。通过不同字符的密集效果,可以适当排序以更加好的效果体现原图的深浅。例如@#之类的字符会更深;_!{}等字符有着更多的空位。

代码实现

具体代码如下所示:

from PIL import Image
ascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-/+@<>i!;:,\^`.')
def get_char(r, b, g, alpha=256):if alpha == 0:return ' 'gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)unit = 256 / len(ascii_char)return ascii_char[int(gray//unit)]
def main():im = Image.open('astro1.jpg')WIDTH, HEIGHT = 100, 40im = im.resize((WIDTH, HEIGHT))txt = ""for i in range(HEIGHT):for j in range(WIDTH):txt += get_char(*im.getpixel((j, i)))txt += '\n'print(txt)fo = open("pic_char.txt","w")fo.write(txt)fo.close()
main()
print("已完成")

由于原画尺寸较大,以下是部分运行结果:

原图如下:

python实例练习(6)图像的字符画绘制相关推荐

  1. Python之旅——图像的字符画绘制

    图像的字符画绘制 第二次写博客,记录每天的学习点滴. 知识点总结 Python的第三方图像处理库 PIL 灰度值公式 gray = 0.2126 * r + 0.7152 * g + 0.0722 * ...

  2. C++实现图像转字符画

    这个是我顺手写的玩具,因此有好些bug,例如图像步长.大小不能自适应等等的问题.不过按照这个思路你能拿到很好的结果.个人认为效果也可以,先上效果: 效果可以吧. 实现思路很简单,就是按照灰度查表.但是 ...

  3. 对鸡你太美的字符画绘制

    本文以鸡你太美为例子进行图片的字符画绘制. 先放上效果图 1.getpixel() 如果图像为多通道,返回图像四元元组RGBA值. 那么什么是多通道图像呢? 一般的彩色图像由R.G.B三种颜色组成,也 ...

  4. python图像转字符画_Python实现图片转字符画的代码实例

    如何利用Python实现图片转字符画详解 如何用python将图片转为字符画给小编你的心作纪念,小编的梦有你的祝福才能够完全,风浪再大,小编也会勇往直前,小编们的爱,镶在青春的纪念册. # codin ...

  5. python图像转字符画_python图像处理-字符画风格图片

    前言 字符画图片,顾名思义就是由一个个字符组成的图片,下面这张图片很容易帮助你理解,如果我们可以将字符排列好,让他看上去像一个物体的形状,那么最后再将它输出保存为一张图片就可以实现了. 下面的这些形状 ...

  6. python图像转字符画_Python3:图片转字符画

    防伪码:没有相当程度的孤独是不可能有内心的平和. 1.环境准备主机名IP系统Python版本 Python-01192.168.10.9CentOS release 6.9 (Final)3.5.4 ...

  7. python图像转字符画_Python实现图片转字符画的示例

    字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法: 将彩色图片转化为灰度图 根据颜色深浅的RGB值(值 ...

  8. Python:利用Pillow库创建字符画

    我们就用这个可爱的小龙猫来做模板 这里,先导入我们要用到的Pillow库中的Image模块 from PIL import Image 创建Image实例,路径的话请自行修改 img = Image. ...

  9. python——PIL模块实现图片转字符画

    以前发过基于PIL模块实现其他图像处理的文章https://blog.csdn.net/sm9sun/article/details/77703551 今天偶尔在网上看到了一些关于图片转换成字符画的相 ...

最新文章

  1. LeetCode简单题之至少是其他数字两倍的最大数
  2. 国防科技大学发布最新「3D点云深度学习」综述论文
  3. HALCON示例程序inspect_bga.hdev测量bga焊点缺陷
  4. Windows 系统如何查看本机的 IP 地址
  5. Taro+react开发(93):判断是否是H5端
  6. Eclipse控制台输出信息的控制
  7. IDEA搭建Maven Web(SSM)项目(二)——jar包引入、jetty服务器配置和ssm配置
  8. 解决在ubuntu环境下, sublime不能输入中文的问题
  9. MEncoder的基础用法—6.1. 选择编解码器及容器格式
  10. MySQL学习(三、分组查询和多表查询)
  11. 如何下载乡镇区划行政边界线
  12. 备份蓝光光盘玩具总动员3,且Eclipse
  13. jQuery砸金蛋抽奖活动php源码
  14. VC实现EXCEL转换为CSV格式
  15. 匈牙利法及其最优性分析
  16. 华为电脑怎么不上鸿蒙,我找不到不喜欢华为鸿蒙操作系统的理由
  17. 图像工程的读书笔记 形状分析
  18. 华为ebgp_华为设备BGP详细配置
  19. Win10打印机使用异常?windows系统如何删除更新补丁,驱动人生解决方案
  20. Ansys·Icem·T型喷管的网格生成

热门文章

  1. 呼吸灯代码linux,ESP32 开发笔记(三)源码示例 3_LEDC_PWM 使用LEDC实现LED呼吸灯
  2. fmcw matlab仿真,干货 | 利用MATLAB实现FMCW雷达的角度估计
  3. linux编译linphone,linphone编译(一) linux 下 无video编译
  4. 组态王下拉式组合框使用教程_组态王下拉列表框问题
  5. SQL 插入数据和查询
  6. dmt,lmt,mssm,assm
  7. Eclipse 启动Tomcat报错 Removing obsolete files from server
  8. Golang中Bit数组的实现
  9. ORM框架---JOOQ简单介绍
  10. 三维旋转心形图(matlab 含源码及注释)