首先贴上我的全部代码,是从实验楼学习的。第一步只用了PIL模块,已经成功做出图片,然后加上argparse模块时,有些问题我就无法理解,不知道为什么会出错。
from PIL import Image import argparse
#命令行参数输入 parser = argparse.ArgumentParser() parser.add_argument('file') #输入文件 parser.add_argument('-o','--output') #输出文件 parser.add_argument('--width',type = int,default = 80) parser.add_argument('--hight',type = int,default = 80)
#获取参数 args=parser.parse_args() IMG = args.file WIDTH = args.width HIGHT = args.hight OUTPUT =args.output
ascii_char = list("$&#@{}/|i!lI;:,"^`'. ")
def get_char(r,b,g,alpha = 256): if alpha == 0: return ' ' length = len(ascii_char) gray = int(0.2126r+0.7152g+0.0722*b) unit = (256.0+1)/length return ascii_char[int(gray/unit)]
if name=='main':
img = Image.open(IMG)
img = img.resize((60,140),Image.NEAREST)
txt = ""
for i in range(HIGHT):
for j in range(WIDTH):
a=(j,i)
txt +=get_char(*img.getpixel(j,i))
txt +='\n'
print(txt)
#字符输出到文件
if OUTPUT:
with open(OUTPUT,'w') as f :
f.write(txt)
else:
with open("output.txt",'w') as f:
f.write(txt)</pre>
1.第一个问题是:
for i in range(HIGHT): for j in range(WIDTH): txt +=get_char(*img.getpixel(j,i))
它Traceback (most recent call last):
File "picutrechange.py", line 42, in <module>
txt +=get_char(*img.getpixel(j,i))
TypeError: getpixel() takes 2 positional arguments but 3 were given
它说我getpixel()带入了3个数,我弄不清楚多出来的一个数是哪里的。
2.当我只用PIL模块做成功的时候是这样的
for i in range(HIGHT): for j in range(WIDTH): a=(j,i) txt +=get_char(*img.getpixel(a)) txt +='\n' print(txt)只用一个模块时是成功了,但是加上argparse模块并且在Cmd运行时它就报错了Traceback (most recent call last):
根本就想不明白image是哪里出现了问题,对这个模块不够熟练,请各位指导一下,谢谢。
改为
txt+=get_char(*img.getpixel((j,i)))版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。