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

码神镇楼

准备阶段

首先需要安装一个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)

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

源图

效果图

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,477评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,251评论 4 61
  • 一个小时前,我接到了一个陌生电话。我犹豫了一下,咬咬牙接了。 “你好,请问你是?” “听不出来了,是吧?是不是听不...
    半痕阅读 419评论 1 1
  • 台湾在历史上曾有三次被迫与祖国大陆分离。你知道台湾与祖国大陆分离的第一次吗? 先从新航路开辟说起吧!15世纪末16...
    红莲叶阅读 6,613评论 12 15
  • 教育不是万能的,至少仅仅教师一方的努力是不够的。今天突然有点悲伤,有点怀疑。自己的努力真的有用吗? 班里俩孩子,父...
    小茜茜公主阅读 245评论 2 6