更新!项目最新地址链接:click me

我们先来看一下效果(图为知乎的吉祥物:刘看山)

原画

字符画(由于图片较大,所以截图的时候未截完整:P)

代码在此,简单讲解请看代码的注释部分,部分详解在代码之后:

#! /usr/bin/env python

# coding: utf-8

from PIL import Image

import argparse

# 命令行参数工具

# 此处不是重点,故而不做讲解,具体参见 (https://docs.python.org/2/library/argparse.html)

parser = argparse.ArgumentParser()

parser.add_argument('file')

args = parser.parse_args()

imgpath = args.file

# 变量ascii_char: 存储用于显示图片的字符种类。我们要注意到,这个list的最后一个元素是空格,这表示,我们

# 将使用空格来代替原图片中灰度值最高的像素点(在灰度图像中,灰度值最高为255,代表白色,最低为0,代表黑色)。

# list中的第一个元素是$,这表示我们将使用$来代替原图片中灰度值最低的像素点。其余字符依此类推。

ascii_char = list(r"$@&%B#=-. ")

# 把RGB转为灰度值,并且返回该灰度值对应的字符标记

def select_ascii_char(r, g, b):

gray = int((19595 * r + 38469 * g + 7472 * b) >> 16) # ‘RGB-灰度值’转换公式

unit = 256.0/len(ascii_char) # ascii_char中的一个字符所能表示的灰度值区间

return ascii_char[int(gray/unit)]

# 返回给定路径图片的字符表示,用户在此还可以指定输出字符画的宽度和高度

def output(imgpath, width=100, height=100):

im = Image.open(imgpath)

im = im.resize((width, height), Image.NEAREST)

txt = ""

for h in xrange(height):

for w in xrange(width):

txt += select_ascii_char(*im.getpixel((w, h))[:3]) # 此处请看详解(1)

txt += '\n'

return txt

def save_as_txtfile(txt):

with open('imgtochar.txt', 'wb') as f:

f.write(txt)

if __name__ == '__main__':

print output(imgpath, 120, 90)

save_as_txtfile(output(imgpath, 120, 90))

详解部分:

(1)

getpixel()函数接受一个元组作为输入参数,该元组为一个二维坐标,函数将返回该坐标处像素点的RGB三个值。

(有时候还会返回RGBA四个值,这取决于图片的彩色模型。也正是因此,我们此处采取切片的方式,即[:3],来保证select_ascii_char函数恰好只接收到3个参数)

我们还要注意到,此处的im.getpixel((w, h))[:3]前面有一个星号,即*,这里涉及的语法点是“可变参数”,详情参见

廖雪峰博客:可变参数

python怎么把图片变成字符_用Python把图片变成字符画相关推荐

  1. python二维图颜色函数_通过python改变图片特定区域的颜色详解

    通过python改变图片特定区域的颜色详解 首先让我祭出一张数学王子高斯的照片,这位印在德国马克上的神人有多牛呢? 他是近代数学的奠基人之一,与牛顿, 阿基米德并称顶级三大数学家,随便找一个编程语言的 ...

  2. excel图片变成代码_没错, Python杀死了Excel

    在大家的印象里,想进入金融行业或者数据岗位,首先需要精通Excel.然而野村证券副首席数字官马修·汉普森在上周五的伦敦Quant Conference上发表讲话:"现在走进交易大厅,用Exc ...

  3. python语言编写一个生成九宫格图片的代码_用Python一键生成炫酷九宫格图片,火了朋友圈...

    作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...

  4. python图片转文字_【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码...

    在日常办公或者学习中,往往存在这样一个工作场景,比如,"老王,我这里有一张图片,你把里面的文字信息给我整理出来",都2021年了,你真的还在手敲图片文字信息么?那么还不赶紧收藏这篇 ...

  5. python图片保存需要在图片展示后_用python处理图片之打开\显示\保存图像的方法...

    一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此, ...

  6. python不属于字符串的是_【python cookbook】python过滤字符串中不属于指定集合的字符...

    1 #!/usr/bin/python 2 #-*- coding: utf-8 -*- 3 4 #过滤字符串中不属于指定集合的字符 5 6 importstring7 8 #生成所有字符的可复用的字 ...

  7. python 图片处理模块_(python)图片处理Pillow模块的使用

    Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建一个图片. 还有一个类为ImageDraw,用来画图. 1. ...

  8. python制作的炫酷动画_用Python一键生成炫酷九宫格图片,火了朋友圈

    作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...

  9. python图片水印软件_使用Python编写批量添加图片水印程序:一、代码方案

    一.为什么要为图片添加水印 在互联网写文章最头疼的一件事情就是发表的文章容易被抄袭,各种抄袭的手段真的是层出不穷.无奈,只能在不影响阅读体验的情况下不断地提高反抄袭的难度.虽然防不住,但是为文章中的图 ...

  10. python语言下划线怎么打_初学Python语言者必须理解的下划线

    下划线(_)在Python语言中有特殊作用. 在大多数编程语言中,下划线是命名变量或者函数名称时的连字符,但是,在Python语言中,不仅如此.如果你是一名Python程序员,对于诸如 _ in ra ...

最新文章

  1. 计算器html js php代码,JavaScript计算器网页版实现代码分享
  2. 2020-08-23logloss对数损失函数
  3. 判断android应用程序是否已安装
  4. 通过nginx访问web,出现ERR_CONTENT_LENGTH_MISMATCH解决方法
  5. 密码学系列之:碰撞抵御和碰撞攻击collision attack
  6. ajax servlet设置响应,在jquery的请求ajax与在servlet中的响应ajax
  7. md5与des算法有何不同_Python算法详解:为什么说算法是程序的灵魂?
  8. 手把手教你|拦截系统调用
  9. struts ValueStack 详解
  10. Spring整合MyBatis之SqlSession对象的产生
  11. JavaScript网页特效5则
  12. 路由汇总与路由聚合的区别
  13. 更好的为学计算机帮助英语,北京教委公布本科跨省转学名单,两学霸为学计算机转出北大...
  14. 癫痫脑电信号特征提取方法
  15. WFP(三)——编译、部署驱动文件*.sys——微软msnmntr项目
  16. 计算机网络自顶向下方法华为路由器配置OSPFv3路由协议实现端到端的通信
  17. System.IO.Stream 中Flush函数的用法
  18. 电路考点之电流和电压参考方向的设定
  19. 宝贝快出生的这三个表现,孕妈尽快去医院待产
  20. IPtable之SNAT与DNAT

热门文章

  1. Android 浏览器启动应用程序
  2. 对做“互联网产品”的一些想法
  3. nginx-一个端口代理多个服务
  4. Eclipse中与CVS相连的工程中的文件,不显示版本信息时,如何处理(重启Eclipse)!
  5. 网络管理与维护作业2
  6. 解决visual studio换行(回车键)不能代码补全问题
  7. Unity中UI界面颤抖解决方法
  8. JAVA中常见异常小结
  9. 关于elasticsearch boostrap checks failed错误类型整理及解决方法
  10. [问题解决]win10误删启动项(BCD)(HP电脑亲测,无需启动盘,并非重装系统)