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

2020-02-23 23:26:34

码神镇楼

准备阶段

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

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

源图


效果图

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



  • 2018-06-19 16:39:03

    java缩放图片、java裁剪图片代码工具类

    在系统的上传图片功能中,我们无法控制用户上传图片的大小,用户可能会上传大到几十M小到1k的的图片,一方面图片太大占据了太多的空间,另一方面,我们没办法在页面上显示统一大小的图片。所以我们需要对用户上传的图片进行缩放和裁剪,这里的缩放和平常的压缩不是一个意思,因为要实现小的图片会放大,大的图片会缩小,而且是等比例变的,图片不会显示挤压的效果。而这种操作Java完全可以实现。下面分享下java缩放、裁剪图片的工具类。

  • 2018-07-02 11:58:18

    探究Laravel使用env函数读取环境变量为null的问题

    最近在工作中遇到一个问题,不知道大家有没有遇到过,在 Laravel中(除 app/config 目录下的配置文件中)使用env函数读取环境变量,有时有用,有时返回 null,这究竟怎么回事?下面通过这篇文章让我们一探究竟。有需要的朋友们下面来一起看看吧。

  • 2018-07-10 16:56:00

    MUI-图片轮播控件

    图片轮播继承自slide插件,因此其DOM结构、事件均和slide插件相同; 在MUI框架中针对图片的轮播做了一个简单的封装。