python怎么把图片变成字符_用Python把图片变成字符画
更新!项目最新地址链接: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把图片变成字符画相关推荐
- python二维图颜色函数_通过python改变图片特定区域的颜色详解
通过python改变图片特定区域的颜色详解 首先让我祭出一张数学王子高斯的照片,这位印在德国马克上的神人有多牛呢? 他是近代数学的奠基人之一,与牛顿, 阿基米德并称顶级三大数学家,随便找一个编程语言的 ...
- excel图片变成代码_没错, Python杀死了Excel
在大家的印象里,想进入金融行业或者数据岗位,首先需要精通Excel.然而野村证券副首席数字官马修·汉普森在上周五的伦敦Quant Conference上发表讲话:"现在走进交易大厅,用Exc ...
- python语言编写一个生成九宫格图片的代码_用Python一键生成炫酷九宫格图片,火了朋友圈...
作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...
- python图片转文字_【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码...
在日常办公或者学习中,往往存在这样一个工作场景,比如,"老王,我这里有一张图片,你把里面的文字信息给我整理出来",都2021年了,你真的还在手敲图片文字信息么?那么还不赶紧收藏这篇 ...
- python图片保存需要在图片展示后_用python处理图片之打开\显示\保存图像的方法...
一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此, ...
- python不属于字符串的是_【python cookbook】python过滤字符串中不属于指定集合的字符...
1 #!/usr/bin/python 2 #-*- coding: utf-8 -*- 3 4 #过滤字符串中不属于指定集合的字符 5 6 importstring7 8 #生成所有字符的可复用的字 ...
- python 图片处理模块_(python)图片处理Pillow模块的使用
Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建一个图片. 还有一个类为ImageDraw,用来画图. 1. ...
- python制作的炫酷动画_用Python一键生成炫酷九宫格图片,火了朋友圈
作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...
- python图片水印软件_使用Python编写批量添加图片水印程序:一、代码方案
一.为什么要为图片添加水印 在互联网写文章最头疼的一件事情就是发表的文章容易被抄袭,各种抄袭的手段真的是层出不穷.无奈,只能在不影响阅读体验的情况下不断地提高反抄袭的难度.虽然防不住,但是为文章中的图 ...
- python语言下划线怎么打_初学Python语言者必须理解的下划线
下划线(_)在Python语言中有特殊作用. 在大多数编程语言中,下划线是命名变量或者函数名称时的连字符,但是,在Python语言中,不仅如此.如果你是一名Python程序员,对于诸如 _ in ra ...
最新文章
- 计算器html js php代码,JavaScript计算器网页版实现代码分享
- 2020-08-23logloss对数损失函数
- 判断android应用程序是否已安装
- 通过nginx访问web,出现ERR_CONTENT_LENGTH_MISMATCH解决方法
- 密码学系列之:碰撞抵御和碰撞攻击collision attack
- ajax servlet设置响应,在jquery的请求ajax与在servlet中的响应ajax
- md5与des算法有何不同_Python算法详解:为什么说算法是程序的灵魂?
- 手把手教你|拦截系统调用
- struts ValueStack 详解
- Spring整合MyBatis之SqlSession对象的产生
- JavaScript网页特效5则
- 路由汇总与路由聚合的区别
- 更好的为学计算机帮助英语,北京教委公布本科跨省转学名单,两学霸为学计算机转出北大...
- 癫痫脑电信号特征提取方法
- WFP(三)——编译、部署驱动文件*.sys——微软msnmntr项目
- 计算机网络自顶向下方法华为路由器配置OSPFv3路由协议实现端到端的通信
- System.IO.Stream 中Flush函数的用法
- 电路考点之电流和电压参考方向的设定
- 宝贝快出生的这三个表现,孕妈尽快去医院待产
- IPtable之SNAT与DNAT