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

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

1、引言


小屌丝:鱼哥,给你看个照片。

小鱼:什么…照片…首先声明,我可是正经人。

小屌丝:你先看看.


小鱼:就这,有啥好看的,我还以为…

小屌丝:对啊,就是这个啊,最近很流行的这种字符画。

小鱼:噢。

小屌丝:鱼哥,是不是感觉被时代丢弃了,已经无法跟随我们00后的脚步了。


小屌丝:我才不信。

小鱼:这有啥难度,把每个字符看成是一个像素,一个字符可以是一种颜色,字符的种类多了,颜色看起来就鲜艳了。

小屌丝:既然这样,那你就给我整一个呗。

小鱼:图片拿来。

image.png


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_DJ
from 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) /10000
    char_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')

运行结果

image.png

敲黑板:

- 我们可以在控制台直接看输出结果;

- 也可以在生产的output.txt文件看输出的结果;


3、总结


写到这里,今天的分享就差不多结束了。

关于PIL库,在小鱼的博文中写的很多次,

我们再熟悉不过了。

所以,在这里就不再过多的唠叨了。

最后,

关注小鱼博客,带你学习更多关于python第三方库的知识。


目录
相关文章
|
2月前
|
算法 前端开发 数据处理
小白学python-深入解析一位字符判定算法
小白学python-深入解析一位字符判定算法
54 0
|
2月前
|
Python
Python实用记录(六):如何打开txt文档并删除指定绝对路径下图片
这篇文章介绍了如何使用Python打开txt文档,删除文档中指定路径的图片,并提供了一段示例代码来展示这一过程。
35 1
|
2月前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
101 0
|
27天前
|
大数据 数据处理 开发者
Python中的迭代器和生成器:不仅仅是语法糖####
本文探讨了Python中迭代器和生成器的深层价值,它们不仅简化代码、提升性能,还促进了函数式编程风格。通过具体示例,揭示了这些工具在处理大数据、惰性求值及资源管理等方面的优势。 ####
|
2月前
|
存储 索引 Python
|
1月前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
25 1
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
173 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JavaScript 前端开发 算法
python中的列表生成式和生成器
欢迎来到瑞雨溪的博客,这里是一位热爱JavaScript和Vue的大一学生的天地。通过自学前端技术2年半,现正向全栈开发迈进。如果你从我的文章中受益,欢迎关注,我将持续更新高质量内容,你的支持是我前进的动力!🎉🎉🎉
24 0
|
2月前
|
Python
Python生成器、装饰器、异常
【10月更文挑战第15天】
|
1月前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
20 0