图片字符画制作

  • 1、引言
  • 2、代码实战
    • 2.1 原理
    • 2.2 实例
  • 3、总结

1、引言

小屌丝:鱼哥,给你看个照片。
小鱼:什么…照片…首先声明,我可是正经人。
小屌丝:你先看看.

小鱼:就这,有啥好看的,我还以为…
小屌丝:对啊,就是这个啊,最近很流行的这种字符画。
小鱼:噢。
小屌丝:鱼哥,是不是感觉被时代丢弃了,已经无法跟随我们00后的脚步了。

小屌丝:我才不信。
小鱼:这有啥难度,把每个字符看成是一个像素,一个字符可以是一种颜色,字符的种类多了,颜色看起来就鲜艳了。
小屌丝:既然这样,那你就给我整一个呗。
小鱼:图片拿来。

2、代码实战

2.1 原理

关于图片转换字符画的原理,
在上面小鱼也说过了,
把每个字符看成是一个像素,一个字符可以是一种颜色,字符的种类多了,颜色看起来就鲜艳了。

由于小鱼的多篇博文,都提到了像素的概念, 在这里就不唠叨了
如果还有哪位大佬没记住的,可以参照小鱼的这几篇博文

  • Python3,19行代码,我把她的照片写入到Excel中,2022年伊始,她终于被我感动了。
  • Python3,10行代码,我把情书写在她的照片里,她被我的才华征服了。
  • Python3,4行代码给图片加美颜,拍照再也不需要开美颜滤镜了。

这里说一点:
灰度值的转换公式

gray = (2126 * r + 7152 * g + 722 * b) / 10000

2.2 实例

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-06-26
# @Author : carl_DJfrom PIL import Image#设置字符集
char = list('M3NB6Q#OC?7>!:–;. ')#设置色值
def get_char(r,g,b,alpha=256):if alpha == 0:return  ' '#灰度值转换公式grey = (2126 * r + 7152 * g + 722 *b) /10000char_idx = int((grey / (alpha + 1.0)) * len(char))return  char[char_idx]#图片像素值写入文件
def write_file(out_file_name,content):with open(out_file_name,'w') as  f :f.write(content)#设置图片的宽、高、输出文件名称等信息
def main(file_name = "input.jpg",width=100,height=80,out_file_name='output.txt'):text = ''im = Image.open(file_name)im = im.resize((width,height),Image.NEAREST)#循环遍历图片的宽和高for i in  range(height):for j in range(width):text += get_char(*im.getpixel((j,i)))text += '\n'print(f'{text}')write_file(out_file_name,text)if __name__ == '__main__':main('xiaowu.png')

运行结果

敲黑板
- 我们可以在控制台直接看输出结果;
- 也可以在生产的output.txt文件看输出的结果;

3、总结

写到这里,今天的分享就差不多结束了。
关于PIL库,在小鱼的博文中写的很多次,
我们再熟悉不过了。
所以,在这里就不再过多的唠叨了。
最后,
关注小鱼博客,带你学习更多关于python第三方库的知识。

Python3,为了给女神暗送秋波,我默默的写了一个图片字符画生成器,真香。相关推荐

  1. python3多线程第三方库_Python之多线程爬虫抓取网页图片的示例代码

    目标 嗯,我们知道搜索或浏览网站时会有很多精美.漂亮的图片. 我们下载的时候,得鼠标一个个下载,而且还翻页. 那么,有没有一种方法,可以使用非人工方式自动识别并下载图片.美美哒. 那么请使用pytho ...

  2. mysql5.7循环,python3.4用循环往mysql5.7中写数据并输出的实现方法

    python3.4用循环往mysql5.7中写数据并输出的实现方法 来源:中文源码网    浏览: 次    日期:2018年9月2日 python3.4用循环往mysql5.7中写数据并输出的实现方 ...

  3. Python3,2行代码添加水印,发朋友圈,图片再也不怕被盗了!!!

    2行代码添加水印 1.引言 2.filestools介绍 2.1 安装 2.2 filestools 功能介绍 2.3 watermarker模块介绍 2.3 代码实例 1.引言 小屌丝:鱼哥,这个周 ...

  4. 猿创征文|Python3,10分钟写了一个WIFI 万(破) 能 (解) 钥 (神) 匙 (器),YYDS。

    wifi万能钥匙 1.引言 2.代码实战 2.1 思路 2.2 模块安装 2.3 代码实战 2.3.1 生成密码本 2.3.2 破解实战 3.总结 1.引言 小鱼:小屌丝,你家WIFI密码是多少? 小 ...

  5. Python3 + wxpython写的一个翻译工具

    Python3 + wxpython写的一个翻译工具 学习日语一直有一个问题,有些时候我们看到一句话,可能大致上能猜出来是什么意思,但是日语汉字却不知道怎么去读.我就有这样的烦恼,极大的降低了我对日语 ...

  6. 为了帮女神完成钢琴家梦想,我用Python写了一个自动弹钢琴脚本,轻松弹奏出各种钢琴曲!

    事情是这样的,女神马上要毕业了,前两天跟我彻夜长谈,还说自己一直有个钢琴家的梦想. 这不为了帮女神圆梦,在我经过一番苦思冥想之后,终于用Python写了一个自动弹钢琴脚本,不会钢琴的都能成为钢琴家. ...

  7. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  8. python3.4用循环往mysql5.7中写数据并输出

    #!/usr/bin/env python # -*- coding:utf-8 -*- # __author__ = "blzhu" """ pyt ...

  9. wordcloud python3.7_[原创]win7/64位系统+python3.7.2下安装wordcloud库失败之解决——一个莫名其妙的方法...

    当前环境: win7/64位系统 python3.7.2 pip-19.2.1 使用pip install wordcould安装时出现错误,提示: 尝试方法①:考虑更换其他安装源 提示没有变化,仍然 ...

最新文章

  1. DrugBank:小分子数据信息挖掘
  2. XHTML学习资料(四)—— 图像
  3. 设置socket IP_TOS选项 (转载)
  4. windows应用程序框架及实例
  5. php简单文件上传类
  6. java之解析DNS的SRV记录
  7. Codeforces Round #746 (Div. 2)
  8. koa2 中使用 svg-captcha 生成验证码
  9. 【产品对比】Word开发工具Aspose.Words和Spire.Doc性能和优劣对比一览
  10. 全球首发!计算机视觉Polygon Mesh Processing读书笔记——5微分几何中的弧长
  11. ajax实现评论区功能,Ajax实现评论中顶和踩功能的实例代码
  12. java服务器向客户端发消息_socket 服务器向指定的客户端发消息
  13. 中小银行传统数据仓库向大数据平台迁移探索
  14. [蓝桥杯] 扩散 (Python 实现)
  15. 电磁流量计流速信号特征
  16. dejavu中如何添加html文件,如何使用iText和Flying Saucer在HTML中创建PDF格式的字体? | 所有编程讨论 | zhouni.net...
  17. 分贝测试软件哪个好 家庭影院,家庭影院隔音怎么做效果最好 这7个解决方案你一定要知道...
  18. 中医药与计算机论文,中医药论文参考文献
  19. 合并石子(三种方法)
  20. Navicat for MySQL的使用

热门文章

  1. chrome 无法拖拽离线安装本地CRX格式插件的解决方法
  2. 二、Solr搜索原理
  3. [kubernetes]-安装dashboard2.0并解决谷歌浏览器无法访问dashboard的问题
  4. 利用DoHome APP和音箱控制小车的实验参考步骤
  5. 华为智能音箱真的来了,一大波手机厂商也随后就到
  6. 汽车大数据洞察:慧数汽车发布《车评白皮书2019》
  7. 汽车大数据洞察:慧数汽车3·15专题篇《2019年汽车产品质量投诉分析》
  8. 代码走查优秀实践集合
  9. 解决WebRTC视频通话,NAT穿透时,局域网有效而4G网无效的问题。
  10. 我很忙!你忙什么?瞎忙!