利用Python 实现图片转字符画

 更新时间:2022年06月27日 15:37:18   作者:我爱Python数据挖掘  
这篇文章主要介绍了利用Python 实现图片转字符画,要将图片转字符画,需要先定义一个字符集,用来和灰度值做映射,将图片每个像素的 RGB 值转换为一个灰度值,将其对应的字符输出就得到字符画

前言

相信大家在网上经常看到有人秀出各种各样的字符画,对于这个五彩斑斓的世界来说,我们日常看到的都是一些高清的彩色的图片,偶尔来个粗糙的黑白的字符画,还是比较解乏的。喜欢记得收藏、关注、点赞。

字符画的原理

这种字符画的原理也比较简单,我们可以把每个字符看成是一个大的像素,一个字符可以代表一种颜色,字符各类越多,可体现的颜色越多,字符画就更有层次感。

灰度值和RGB

灰度值是指黑白图像中点的颜色的深度,它的范围是0-255,白色为255,黑色为0,其他颜色介于两者之间。

RGB 是红绿蓝三颜色,通过不同的叠加可得到其他颜色。

要将图片转字符画,需要先定义一个字符集,用来和灰度值做映射,将图片每个像素的 RGB 值转换为一个灰度值,将其对应的字符输出就得到字符画。

RGB 转灰度值,有个转换学公式:

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

代码实战

我随意选择了一张图片:

我的目标是转化成下面这样:

根据以上转换原理,我们直接上代码:

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(text)
    write_file(out_file_name, text)

if __name__ == '__main__':
    main('dance.png')

程序的思路:

  • 定义一个字符数组,这个数组里面的字符可以随意写。
  • 解析图片,将图片里面的每个像素点解析成 RGB 值。
  • 根据我们上面的公式,将每个像素点转换成字符数组里面的一个字符。
  • 将所有像素点对应的字符拼接起来,就完成了转换。

总结

图片转字符画,转换的原理和思路还是比较简单的,实现也不复杂,大家可以动手试试看!

到此这篇关于利用Python 实现图片转字符画的文章就介绍到这了,更多相关Python图片转字符画内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python标识符的用法及注意事项

    python标识符的用法及注意事项

    在本篇文章里小编给大家整理了一篇关于python标识符的用法及注意事项相关内容,有需要的朋友们可以学习下。
    2021-09-09
  • PyCharm中安装PIL/Pillow的方法

    PyCharm中安装PIL/Pillow的方法

    这篇文章主要介绍了PyCharm中PIL/Pillow的安装,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Python读取URL生成PDF的方法步骤

    Python读取URL生成PDF的方法步骤

    URL(Uniform Resource Locator)是用于标识和定位网络上资源的字符串,本文将给大家介绍Python读取URL生成PDF的方法步骤,文中有相关的代码示例和图文讲解供大家参考,需要的朋友可以参考下
    2024-07-07
  • Django使用Jinja2模板引擎的示例代码

    Django使用Jinja2模板引擎的示例代码

    这篇文章主要介绍了Django使用Jinja2模板引擎的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python对json的相关操作实例详解

    python对json的相关操作实例详解

    这篇文章主要介绍了python对json的相关操作,结合实例形式详细分析了json的概念、功能以及Python针对json的解析、输出、排序、转换等操作技巧,需要的朋友可以参考下
    2017-01-01
  • Python基础学习之认识线程

    Python基础学习之认识线程

    这篇文章主要介绍了Python线程,这篇开始我们将进入中级编程。处理更加复杂事情。比如本文的线程,咱们先从基础知识入手,需要的朋友可以参考下下面文章的详细内容
    2022-02-02
  • Python多线程:主线程等待所有子线程结束代码

    Python多线程:主线程等待所有子线程结束代码

    这篇文章主要介绍了Python多线程:主线程等待所有子线程结束代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python连接Oracle数据库的操作指南

    Python连接Oracle数据库的操作指南

    Oracle数据库是一种强大的企业级关系数据库管理系统(RDBMS),而Python是一门流行的编程语言,两者的结合可以提供出色的数据管理和分析能力,本教程将详细介绍如何在Python中连接Oracle数据库,并演示常见的数据库任务,需要的朋友可以参考下
    2023-11-11
  • Python中规范定义命名空间的一些建议

    Python中规范定义命名空间的一些建议

    命名空间是Python程序的一大根本,编程时持命名空间的整洁还是十分必要的,这里就来为大家总结Python中规范定义命名空间的一些建议,需要的朋友可以参考下
    2016-06-06
  • 详解在Python程序中解析并修改XML内容的方法

    详解在Python程序中解析并修改XML内容的方法

    这篇文章主要介绍了在Python程序中解析并修改XML内容的方法,依赖于解析成树状结构后的节点进行修改,需要的朋友可以参考下
    2015-11-11

最新评论