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操作基础】——字典,迭代器和生成器
【Python操作基础】——字典,迭代器和生成器
|
2天前
|
数据安全/隐私保护 Python
python 图片打水印 透明图片合并
python 图片打水印 透明图片合并
7 1
|
2天前
|
存储 程序员 Python
深入理解Python中的生成器和迭代器
本文将深入探讨Python中生成器和迭代器的概念、原理以及它们在编程中的应用。通过详细解析生成器和迭代器的工作机制,读者将能够更好地理解Python中的迭代器协议、生成器函数以及生成器表达式的使用方法。同时,本文还将介绍生成器和迭代器在Python中的一些常见应用场景,并提供一些实用的编程技巧和最佳实践。
|
2天前
|
存储 索引 Python
python图片九宫格图片处理
本篇文章介绍了一个Python项目的实现,项目能够处理图片并将其组合成九宫格或四宫格,同时还具备音乐播放功能,对于初学者来说是一个可以进行实战学习的初级项目。
|
2天前
|
存储 计算机视觉 Python
python实现Gif图片的字符画
这是一个Python实战项目,旨在将GIF动态图转化为ASCII字符动画。项目适合有一定Python基础的学习者,主要使用os、imageio、PIL库。首先,代码导入所需库,然后通过PIL创建空白图片并添加文本。接着,程序读取GIF,拆分帧并转为字符画,存入“tmp”目录。同时,代码提供了清空“tmp”目录、将灰度值映射为ASCII字符、将图片处理成字符画的函数。此外,还有创建新画布和合成GIF的步骤。主函数调用这些模块,最终将ASCII字符画合并成GIF。项目展示了将动态图像转换为ASCII艺术的过程。
|
2天前
|
大数据 Python
python中的推导式、生成器(二)
python中的推导式、生成器(二)
|
2天前
|
索引 Python 容器
python中的推导式、生成器(一)
python中的推导式、生成器(一)
|
2天前
|
Python
python代码根据点坐标裁切图片
【4月更文挑战第19天】python代码根据点坐标裁切图片
29 2
|
2天前
|
存储 Python
深入理解Python中的生成器和迭代器
本文将深入探讨Python中生成器和迭代器的概念及其在实际编程中的应用。通过对生成器和迭代器的原理解析,以及实际案例的演示,读者将能够更好地理解和利用这些强大的编程工具。
|
2天前
|
运维 Shell Sentinel
第八章 Python可迭代对象、迭代器和生成器
第八章 Python可迭代对象、迭代器和生成器