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

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)

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

源图


效果图

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



  • 2020-02-23 23:27:26

    Nuxt.js 基础入门教程

    Nuxt.js 就是一个极简的 vue 版的 ssr 框架。基于它,我们可以快速开发一个基于 vue 的 ssr 单页面应用。

  • 2020-02-24 18:36:17

    百度地图做电子围栏总结

    需求:在地图上画出围栏,设置围栏信息后保存,生成围栏列表。全选时,地图视野可看到全部的围栏区域,单独勾选会调整地图视野到当前勾选的围栏。围栏区域的中心点要显示围栏名称。

  • 2020-02-24 18:37:17

    百度地图绘制轨迹点

    没有后台获取事实信息 都是伪数据- -轨迹信息做不到事实导航。 控件可以根据自己的需求添加 位置通过offset:new BMAP.Size(x,y)进行微调 事实路况信息需要通过引没有后台获取事实信息 都是伪数据- -轨迹信息做不到事实导航。 控件可以根据自己的需求添加 位置通过offset:new BMAP.Size(x,y)进行微调 3D视图部分城市没有开放开放 根据需求自己添加

  • 2020-02-24 18:43:54

    百度地图JS关于规划路线偏离预警的解决方式

    说实在的这个解决方案有点low,我并不会很赞成,效率有点低。如果多的话,很是耗费资源。 我推荐使用矩形来解决这个问题,而不是圆形。 当日用矩形的话,就要确保轨迹是折线的,而不是弧线等。

  • 2020-02-24 18:45:33

    巧妙解决百度地图加偏纠偏问题

    所谓的加偏,就是将真实坐标加上一定的偏移量,而这个偏移量又不是线性的,不同地区偏移不一样,但同一地区偏移量却差不多,因此,有人就使用了个暴力破解的方法,

  • 2020-02-24 18:48:34

    规划驾车路线和途径点及判断车辆路线偏移

    项目需求需要利用百度地图构建路线并支持设置途径点,以及可以实时监控车辆是否偏移路线;两种方案。 写了比较完整的注释了,替换ak可直接看效果,规划驾车路线和途径点及判断车辆路线偏移

  • 2020-02-25 15:15:56

    nuxtjs全栈

    Nuxt.js 依据 pages 目录结构自动生成 vue-router 模块的路由配置。 要在页面之间使用路由,我们建议使用<nuxt-link> 标签。