美文网首页python爬虫入门看这个就够了Android开发Android知识
神奇!几行代码就能轻松把图片转为字符图

神奇!几行代码就能轻松把图片转为字符图

作者: CoorChice | 来源:发表于2017-02-10 11:40 被阅读1363次
    码神镇楼

    准备阶段

    首先需要安装一个Python的图形处理库。终端直接输入:

    brew install Pillow
    

    实现阶段

    不多说,直接上打码。

    from PIL import Image  # 导入Pillow的Image模块
    
    IMG = "/Users/##########/avart.jpg"                 # 需要处理掉的图片路径
    filePath = "/##############/avart.txt"              # 处理结果的保存路径
    ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
    height = 45
    width = 100
    
    
    # 重点。将256灰度映射到70个字符上
    def get_char(r, g, b, alpha=256):
        if alpha == 0:
            return ' '
        length = len(ascii_char)
        gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)  # 灰度转换公式,🉑以自己
    
        unit = (256.0 + 1) / length                       # 比例
        inext = int(gray / unit)                          # 根据灰度求对应的index
        return ascii_char[inext]
    
    
    if __name__ == '__main__':
    
        im = Image.open(IMG)                              # 读取图片
        im = im.resize((width, height), Image.NEAREST)    # 调整图片的大小
    
        txt = ""
        for i in range(height):                           # 遍历图片的像素点,获取每一个像素点的rgbA值
            for j in range(width):
                txt += get_char(*im.getpixel((j, i)))     # 获得相应位置像素点的值组元(a,g,b,a)
            txt += '\n'                                   # 换行
    
        print txt
    
        # 字符图输出到文件
        with open(filePath, 'w') as f:                    # 输出到指定文件
            f.write(txt)
    

    好了,就是这么一点码。很简单吧。
    下面看看效果图:

    源图 效果图

    觉得还不错的话,就拜托点个赞,加个关注哦!😊

    相关文章

      网友评论

      本文标题:神奇!几行代码就能轻松把图片转为字符图

      本文链接:https://www.haomeiwen.com/subject/ejsgittx.html