python生成中文字符画_python实战练手项目---字符画及其原理
python实战练手项目---字符画及其原理
1. 先看效果
先看效果图,原图是
字符画
2. 实现原理
其实原理非常简单,首先,要准备一个字符集
char_set = '''$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
其次,要将图片转成灰度图,所谓灰度图就是黑白照片,这个过程中还要缩小图片,每张图片缩小的比例都不尽相同,要根据图片的实际情况来决定,这样就得到了一张缩小后的黑白照片
im = Image.open('qq.png')
im = im.resize((80, 50), Image.ANTIALIAS)
im = im.convert('L') # 转为黑白图, 每个像素都一个灰度值,从0到255, 0是黑色, 255是白色
im.save('t.jpeg') # 保存图片只是为了演示黑白照片
看起来有一些丑陋,这张黑白照片一共有80*50个像素,每个像素点都可以通过im.getpixel方法获得灰度值,这个值的范围是从0到255,0是黑色,255是白素,中间就是从黑到白的灰色。
接下来要做的事情就是把4000个灰度值转成字符
def get_char(gray):
if gray >= 240:
return ' '
else:
return char_set[int(gray/((256.0 + 1)/len(char_set)))]
灰度值大于240的,我都转成空字符串,这样看着舒服,其余的,按比例映射到字符集上。
强调一点,生成的txt文件不要打开查看,那样你看不到一个完整的字符画,在浏览器里打开字符画,这样才可以看到完整的,如果你把缩小的比例再放大一点,生成的字符画就会失去很多细节,一般来说,宽80就可以了,高度看情况调整。
3. 完整代码
from PIL import Image
char_set = '''$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
im = Image.open('qq.png')
im = im.resize((80, 50), Image.ANTIALIAS)
im = im.convert('L') # 转为黑白图, 每个像素都一个灰度值,从0到255, 0是黑色, 255是白色
im.save('t.jpeg')
def get_char(gray):
if gray >= 240:
return ' '
else:
return char_set[int(gray/((256.0 + 1)/len(char_set)))]
text = ''
for i in range(im.height):
for j in range(im.width):
gray = im.getpixel((j, i)) # 返回值可能是一个int, 也可能是一个三元组
if isinstance(gray, tuple):
gray = int(0.2126 * gray[0] + 0.7152 * gray[1] + 0.0722 * gray[2])
text += get_char(gray)
text += '\n'
with open('pic.txt', 'w')as f:
f.write(text)
python生成中文字符画_python实战练手项目---字符画及其原理相关推荐
- python画画需要什么模块_python实战练手项目---使用turtle模块画奥运五环
python实战练手项目---使用turtle模块画奥运五环 2020年将举办东京奥运会,本篇实践文章将带你使用turtle模块画一个五环图,先来看效果图 1. 定义一个类继承Turtle class ...
- python上网行为分析_python实战练手项目---获取谷歌浏览器的历史记录,分析一个人的上网行为...
python实战练手项目---获取谷歌浏览器的历史记录,分析一个人的上网行为 谷歌浏览器的历史浏览记录存储在名为History sqlite文件中,在mac环境下,该文件的地址是 /Users/zha ...
- python做什么生意好找_Python 的练手项目有哪些值得推荐?
注:下面分享的练习项目面向刚入门的Python学习者,项目的代码地址见结尾. Python 是一门虽然简单却很强大的编程语言.可能有些刚入门 Python 的朋友,虽然已经掌握了 Python 的基础 ...
- python爬取酒店信息_Python 爬虫练手项目—酒店信息爬取
from bs4 import BeautifulSoup import requests import time import re url = 'http://search.qyer.com/ho ...
- python做些什么项目_Python 的练手项目有哪些值得推荐
1 Web方向的练手项目 这个其实是肯定不用多少的了.Python的练手项目就是可以做一个网站了.我们可以做一个属于自己的博客.在做博客的时候,我们可以巩固的知识点是 Html+CSS+JS的基础知识 ...
- python3实战练手项目_Python0基础练手项目有哪些值得推荐?附实战项目+学习图谱...
原标题:Python 0基础练手项目,有哪些值得推荐?附实战项目+学习图谱 刚学Python的时候,因为豆瓣帖子老沉,就写了一个顶帖脚本.就是用这个脚本,给自己的帖子顶了两年,在小组里追到了现在的女朋 ...
- 100个Python实战练手项目(附源码+素材),学习必备
前言: 不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了最新32个Python实战项目列表,都有完整且详细的视频教程和 ...
- python练手_Python数据分析练手项目
最近,我在阿里天池大数据竞赛中发现了一些练手的项目,例如,用Python"画月饼过云上中秋",虽然中秋已经过去了,但还是好奇Python是怎么画出月饼的? 先上图↓ 火龙果馅的月饼 ...
- 2022最新python100个实战练手项目,【附源码】,快来学习起来吧!
Python是目前最好的编程语言之一.由于其可读性和对初学者的友好性,已被广泛使用.那么要想学会并掌握Python,可以实战的练习项目是必不可少的. 接下来,我将给大家介绍20个非常实用的Python ...
- 分享几个接口自动化的实战练手项目
Hi,大家好. 最近一直比较忙,难得昨天有空,特意抽时间打开公众号后台,回复一下朋友们的留言.自进入四月以来,后台收到了近百条 点工转自动化 & 跳槽涨薪面试 方面问题的留言,很多人想趁春招旺 ...
最新文章
- Android FM模块学习之一 FM启动流程
- word2vec简单通俗易懂
- 简单的中文分词加上kmean聚类 (c++)
- BSD/MIT/Apache许可证印象尚可
- 自动登录Windows系统
- redmi airdots左右耳不串联怎么办_小米Redmi AirDots蓝牙耳机只能单边连接不能串联的解决办法...
- 用html制作发货单,使用excel制作发货单和送货单模板教程
- Java 高级 多线程 线程安全 3 种常见解决方案教程.
- 【简单实用】百度网盘提速方法,不用破解和插件
- tensorflow ckpt模型转saved_model格式并进行模型预测
- google map 谷歌地图 更改当前定位图标icon大头钉小蓝点
- 计算机未来职业规划英语作文,我未来的计划英语作文(通用10篇)
- DEVC++小游戏狼人杀
- 关于simplis仿真和驱动方法
- 概率漫谈 转自 林达华
- #### mysql联合索引 注意事项 ####
- JAVA商城源码-B2B2C商城系统-独立部署,一套源码终身可用
- 车内看车头正不正技巧_路边侧方位实用停车技巧,学会这一招,再也不担心车头刮到前车...
- selenium自动获取王者荣耀英雄海报并保存到本地
- 亚马逊产品下架原因?恢复Listing
热门文章
- RTMP推流摄像机联合EasyCVR安防视频云服务平台助力智能楼宇的建设
- 我的世界服务器怎么做无限的弓,我的世界怎么用命令方块做无限弓?
- 三重积分的概念,计算(先一后二(投影穿线法))
- Swagger之OAS 3.0配置
- matlab泊松分布随机数和图像,基于Matlab的Poisson分布随机数的Monte carlo模拟
- 参考分享《Python深度学习》高清中文版pdf+高清英文版pdf+源代码
- matlab imshow加画网格,matlab能生成随机行走网格吗? - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
- 来看一场开发者大会,缘何引来千人盛况
- 帝国cms发布文章对哪些数据表做了操作
- python求矩阵的秩_python – 计算所有子矩阵有多少个矩阵具有满秩