python特效之字符成像详解

 更新时间:2022年01月11日 15:54:00   作者:autofelix  
这篇文章主要为大家介绍了python特效之字符成像,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

一、特效预览

处理前

处理后

细节放大后

二、程序原理

  • 将图片所在的 256 的灰度映射到相应的字符上面
  • 也就是 RGB 值转成相应的字符
  • 然后再将字符其写入文件即可

你听懂了吗 

三、程序源码

#!/usr/bin/env python
# encoding: utf-8
from PIL import Image
class charsetPicture:
    '''
     This is a main Class, the file contains all documents.
     One document contains paragraphs that have several sentences
     It loads the original file and converts the original file to new content
     Then the new content will be saved by this class
    '''
    def __init__(self):
        self.char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
        self.width = 160
        self.height = 60
    def hello(self):
        '''
        This is a welcome speech
        :return: self
        '''
        print('*' * 50)
        print(' ' * 18 + '图片转换为字符图片')
        print(' ' * 5 + 'Author: autofelix  Date: 2022-01-07 13:14')
        print('*' * 50)
        return self
    def get_char(self, r, g, b, alpha=256):
        '''
        将256灰度映射到70个字符上,也就是RGB值转字符的函数
        :alpha: 透明度
        :return: self
        '''
        if alpha == 0:
            return ' '
        length = len(self.char)
        gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
        unit = (256.0 + 1) / length
        return self.char[int(gray / unit)]
    def run(self):
        '''
        The program entry
        '''
        im = Image.open('assets/aaa.jpeg')
        im = im.resize((self.width, self.height), Image.NEAREST)
        txt = ''
        for i in range(self.height):
            for j in range(self.width):
                txt += self.get_char(*im.getpixel((j, i)))
            txt += '\n'
        print(txt)
        with open('handler.txt', 'w') as f:
            f.write(txt)
if __name__ == '__main__':
    charsetPicture().hello().run()

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • Python数据类型之Tuple元组实例详解

    Python数据类型之Tuple元组实例详解

    这篇文章主要介绍了Python数据类型之Tuple元组,结合实例形式分析了Python元组类型的概念、定义、读取、连接、判断等常见操作技巧与相关注意事项,需要的朋友可以参考下
    2019-05-05
  • Python 避免字典和元组的多重嵌套问题

    Python 避免字典和元组的多重嵌套问题

    这篇文章主要介绍了Python 避免字典和元组的多重嵌套,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Python中使用logging模块代替print(logging简明指南)

    Python中使用logging模块代替print(logging简明指南)

    这篇文章主要介绍了Python中使用logging模块代替print的好处说明,主旨是logging模块简明指南,logging模块的使用方法介绍,需要的朋友可以参考下
    2014-07-07
  • Python运维开发之psutil库的使用详解

    Python运维开发之psutil库的使用详解

    这篇文章主要介绍了Python运维开发之psutil库的使用,psutil能够轻松实现获取系统运行的进程和系统利用率。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Python中方法定义与方法调用举例详解

    Python中方法定义与方法调用举例详解

    在Python中,方法调用是编写程序时经常会涉及到的一个重要概念,下面这篇文章主要给大家介绍了关于Python中方法定义与方法调用的相关资料,文章通过代码介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • python opencv肤色检测的实现示例

    python opencv肤色检测的实现示例

    这篇文章主要介绍了python opencv肤色检测的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 如何通过python实现人脸识别验证

    如何通过python实现人脸识别验证

    这篇文章主要介绍了如何通过python实现人脸识别验证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python任意字符串转16, 32, 64进制的方法

    Python任意字符串转16, 32, 64进制的方法

    今天小编就为大家分享一篇Python任意字符串转16, 32, 64进制的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 介绍Python中的一些高级编程技巧

    介绍Python中的一些高级编程技巧

    这篇文章主要介绍了介绍Python中的一些高级编程技巧,包括推导师和装饰器等重要的进阶知识点,皆为深入学习Python开发的必备基本功,需要的朋友可以参考下
    2015-04-04
  • 用Python实现职工信息管理系统

    用Python实现职工信息管理系统

    这篇文章主要介绍了用Python实现职工信息管理系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论