python实例练习(6)图像的字符画绘制
文章目录
- 简介
- 绘制方法
- 代码实现
简介
位图图片是由不同颜色像素点组成的规则分布,如果使用字符代替像素点,那么图像就可以称之为字符画。
本文将为各位读者介绍如何将图片转换成投资度组成的字符画
绘制方法
首先需要定义一个字符集,以便于替换图像中的像素点,字符种类越多,便越能够还原原图的色彩变化,图片也越能够富有层次感。
下面就是一个简单的字符集定义。
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)图像的字符画绘制相关推荐
- Python之旅——图像的字符画绘制
图像的字符画绘制 第二次写博客,记录每天的学习点滴. 知识点总结 Python的第三方图像处理库 PIL 灰度值公式 gray = 0.2126 * r + 0.7152 * g + 0.0722 * ...
- C++实现图像转字符画
这个是我顺手写的玩具,因此有好些bug,例如图像步长.大小不能自适应等等的问题.不过按照这个思路你能拿到很好的结果.个人认为效果也可以,先上效果: 效果可以吧. 实现思路很简单,就是按照灰度查表.但是 ...
- 对鸡你太美的字符画绘制
本文以鸡你太美为例子进行图片的字符画绘制. 先放上效果图 1.getpixel() 如果图像为多通道,返回图像四元元组RGBA值. 那么什么是多通道图像呢? 一般的彩色图像由R.G.B三种颜色组成,也 ...
- python图像转字符画_Python实现图片转字符画的代码实例
如何利用Python实现图片转字符画详解 如何用python将图片转为字符画给小编你的心作纪念,小编的梦有你的祝福才能够完全,风浪再大,小编也会勇往直前,小编们的爱,镶在青春的纪念册. # codin ...
- python图像转字符画_python图像处理-字符画风格图片
前言 字符画图片,顾名思义就是由一个个字符组成的图片,下面这张图片很容易帮助你理解,如果我们可以将字符排列好,让他看上去像一个物体的形状,那么最后再将它输出保存为一张图片就可以实现了. 下面的这些形状 ...
- python图像转字符画_Python3:图片转字符画
防伪码:没有相当程度的孤独是不可能有内心的平和. 1.环境准备主机名IP系统Python版本 Python-01192.168.10.9CentOS release 6.9 (Final)3.5.4 ...
- python图像转字符画_Python实现图片转字符画的示例
字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法: 将彩色图片转化为灰度图 根据颜色深浅的RGB值(值 ...
- Python:利用Pillow库创建字符画
我们就用这个可爱的小龙猫来做模板 这里,先导入我们要用到的Pillow库中的Image模块 from PIL import Image 创建Image实例,路径的话请自行修改 img = Image. ...
- python——PIL模块实现图片转字符画
以前发过基于PIL模块实现其他图像处理的文章https://blog.csdn.net/sm9sun/article/details/77703551 今天偶尔在网上看到了一些关于图片转换成字符画的相 ...
最新文章
- LeetCode简单题之至少是其他数字两倍的最大数
- 国防科技大学发布最新「3D点云深度学习」综述论文
- HALCON示例程序inspect_bga.hdev测量bga焊点缺陷
- Windows 系统如何查看本机的 IP 地址
- Taro+react开发(93):判断是否是H5端
- Eclipse控制台输出信息的控制
- IDEA搭建Maven Web(SSM)项目(二)——jar包引入、jetty服务器配置和ssm配置
- 解决在ubuntu环境下, sublime不能输入中文的问题
- MEncoder的基础用法—6.1. 选择编解码器及容器格式
- MySQL学习(三、分组查询和多表查询)
- 如何下载乡镇区划行政边界线
- 备份蓝光光盘玩具总动员3,且Eclipse
- jQuery砸金蛋抽奖活动php源码
- VC实现EXCEL转换为CSV格式
- 匈牙利法及其最优性分析
- 华为电脑怎么不上鸿蒙,我找不到不喜欢华为鸿蒙操作系统的理由
- 图像工程的读书笔记 形状分析
- 华为ebgp_华为设备BGP详细配置
- Win10打印机使用异常?windows系统如何删除更新补丁,驱动人生解决方案
- Ansys·Icem·T型喷管的网格生成
热门文章
- 呼吸灯代码linux,ESP32 开发笔记(三)源码示例 3_LEDC_PWM 使用LEDC实现LED呼吸灯
- fmcw matlab仿真,干货 | 利用MATLAB实现FMCW雷达的角度估计
- linux编译linphone,linphone编译(一) linux 下 无video编译
- 组态王下拉式组合框使用教程_组态王下拉列表框问题
- SQL 插入数据和查询
- dmt,lmt,mssm,assm
- Eclipse 启动Tomcat报错 Removing obsolete files from server
- Golang中Bit数组的实现
- ORM框架---JOOQ简单介绍
- 三维旋转心形图(matlab 含源码及注释)