序
继续学习。开始练习一些小项目,个人感觉练习项目能提升自己的技术。比只看一些文章,纸上谈兵要好很多。
简介
此次的项目比较简单,先从简单的入手,循序渐进
我的实验环境是Windows 10 + Python 2.7 + PyCharm
本次项目牵扯的图片处理,所以用到的模块有Pillow,其次使用的命令行参数模块optparse。
步骤
一、创建项目“20171206”
二、导入需要用到的模块
from PIL import Image
import optparse
三、字符画用到的字符集如下:
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
四、本人的参考代码:
# -*- coding: utf-8 -*-
# @Time : 2017/12/6 16:44
# @Author : Darker
# @Site : www.liangz.org
# @File : ascii.py
# @Software: PyCharm
from PIL import Image
import optparse
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
# RGB转化为字符
def getChar(r,g,b,m=256):
if m == 0 :
return ' '
length = len(ascii_char)
# RGB转换为灰度值
gray = int(0.2126 * r + 0.7152 *g + 0.0722 * b)
unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)]
# 命令行参数
def main():
parser = optparse.OptionParser(u"使用方法: python ascii.py -f <图片文件>")
parser.add_option('-f', dest='TargetImage', type='string', help=u'指定图片文件')
parser.add_option('-w', dest='WIDTH', type=int, help=u'指定字符画宽')
parser.add_option('-H', dest='HEIGHT', type=int, help=u'指定字符画高')
options, args = parser.parse_args()
WIDTH = options.WIDTH
HEIGHT = options.HEIGHT
if options.TargetImage == None :
print(parser.usage)
exit(0)
else:
TargetImage = options.TargetImage
img = Image.open(TargetImage)
WIDTH = img.size[0] # 获取图片的宽度
HEIGHT = img.size[1] # 获取图片的高度
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += getChar(*img.getpixel((j,i)))
txt += '\n'
print txt
# 写入TXT文件中
with open("out.txt", 'w') as f:
f.write(txt)
if __name__ == '__main__':
main()
五、查看实验效果:
python ascii.py -f dora.png
不足之处
通过实验,我发现这个代码不适用与大图片和颜色太复杂的图片。我的电脑屏幕不是太大,如果图片太大,命令行显示不了,结局是各种符号混杂。颜色如果太多,不容易看到原始图像。
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了