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实战练手项目---字符画及其原理相关推荐

  1. python画画需要什么模块_python实战练手项目---使用turtle模块画奥运五环

    python实战练手项目---使用turtle模块画奥运五环 2020年将举办东京奥运会,本篇实践文章将带你使用turtle模块画一个五环图,先来看效果图 1. 定义一个类继承Turtle class ...

  2. python上网行为分析_python实战练手项目---获取谷歌浏览器的历史记录,分析一个人的上网行为...

    python实战练手项目---获取谷歌浏览器的历史记录,分析一个人的上网行为 谷歌浏览器的历史浏览记录存储在名为History sqlite文件中,在mac环境下,该文件的地址是 /Users/zha ...

  3. python做什么生意好找_Python 的练手项目有哪些值得推荐?

    注:下面分享的练习项目面向刚入门的Python学习者,项目的代码地址见结尾. Python 是一门虽然简单却很强大的编程语言.可能有些刚入门 Python 的朋友,虽然已经掌握了 Python 的基础 ...

  4. python爬取酒店信息_Python 爬虫练手项目—酒店信息爬取

    from bs4 import BeautifulSoup import requests import time import re url = 'http://search.qyer.com/ho ...

  5. python做些什么项目_Python 的练手项目有哪些值得推荐

    1 Web方向的练手项目 这个其实是肯定不用多少的了.Python的练手项目就是可以做一个网站了.我们可以做一个属于自己的博客.在做博客的时候,我们可以巩固的知识点是 Html+CSS+JS的基础知识 ...

  6. python3实战练手项目_Python0基础练手项目有哪些值得推荐?附实战项目+学习图谱...

    原标题:Python 0基础练手项目,有哪些值得推荐?附实战项目+学习图谱 刚学Python的时候,因为豆瓣帖子老沉,就写了一个顶帖脚本.就是用这个脚本,给自己的帖子顶了两年,在小组里追到了现在的女朋 ...

  7. 100个Python实战练手项目(附源码+素材),学习必备

    前言: 不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了最新32个Python实战项目列表,都有完整且详细的视频教程和 ...

  8. python练手_Python数据分析练手项目

    最近,我在阿里天池大数据竞赛中发现了一些练手的项目,例如,用Python"画月饼过云上中秋",虽然中秋已经过去了,但还是好奇Python是怎么画出月饼的? 先上图↓ 火龙果馅的月饼 ...

  9. 2022最新python100个实战练手项目,【附源码】,快来学习起来吧!

    Python是目前最好的编程语言之一.由于其可读性和对初学者的友好性,已被广泛使用.那么要想学会并掌握Python,可以实战的练习项目是必不可少的. 接下来,我将给大家介绍20个非常实用的Python ...

  10. 分享几个接口自动化的实战练手项目

    Hi,大家好. 最近一直比较忙,难得昨天有空,特意抽时间打开公众号后台,回复一下朋友们的留言.自进入四月以来,后台收到了近百条 点工转自动化 & 跳槽涨薪面试 方面问题的留言,很多人想趁春招旺 ...

最新文章

  1. Android FM模块学习之一 FM启动流程
  2. word2vec简单通俗易懂
  3. 简单的中文分词加上kmean聚类 (c++)
  4. BSD/MIT/Apache许可证印象尚可
  5. 自动登录Windows系统
  6. redmi airdots左右耳不串联怎么办_小米Redmi AirDots蓝牙耳机只能单边连接不能串联的解决办法...
  7. 用html制作发货单,使用excel制作发货单和送货单模板教程
  8. Java 高级 多线程 线程安全 3 种常见解决方案教程.
  9. 【简单实用】百度网盘提速方法,不用破解和插件
  10. tensorflow ckpt模型转saved_model格式并进行模型预测
  11. google map 谷歌地图 更改当前定位图标icon大头钉小蓝点
  12. 计算机未来职业规划英语作文,我未来的计划英语作文(通用10篇)
  13. DEVC++小游戏狼人杀
  14. 关于simplis仿真和驱动方法
  15. 概率漫谈 转自 林达华
  16. #### mysql联合索引 注意事项 ####
  17. JAVA商城源码-B2B2C商城系统-独立部署,一套源码终身可用
  18. 车内看车头正不正技巧_路边侧方位实用停车技巧,学会这一招,再也不担心车头刮到前车...
  19. selenium自动获取王者荣耀英雄海报并保存到本地
  20. 亚马逊产品下架原因?恢复Listing

热门文章

  1. RTMP推流摄像机联合EasyCVR安防视频云服务平台助力智能楼宇的建设
  2. 我的世界服务器怎么做无限的弓,我的世界怎么用命令方块做无限弓?
  3. 三重积分的概念,计算(先一后二(投影穿线法))
  4. Swagger之OAS 3.0配置
  5. matlab泊松分布随机数和图像,基于Matlab的Poisson分布随机数的Monte carlo模拟
  6. 参考分享《Python深度学习》高清中文版pdf+高清英文版pdf+源代码
  7. matlab imshow加画网格,matlab能生成随机行走网格吗? - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  8. 来看一场开发者大会,缘何引来千人盛况
  9. 帝国cms发布文章对哪些数据表做了操作
  10. python求矩阵的秩_python – 计算所有子矩阵有多少个矩阵具有满秩