|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
from PIL import Image
def main(IMG):
WIDTH=160
HEIGHT=80
lst=list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,")
def get_char(r,g,b,alpha=256):
if alpha==0:
return ' '
lenght=len(lst)
gray=int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit=256/lenght
return lst[int(gray/unit)]
im=Image.open(IMG)
im=im.resize((WIDTH,HEIGHT),Image.NEAREST)
txt=''
for i in range(HEIGHT):
for j in range(WIDTH):
a=im.getpixel((j,i))
print(a)
#txt += get_char(*a)
txt += get_char(a)
txt += '\n'
print(txt)
main(IMG=input('请输入图片地址 :'))
在上述代码中txt += get_char(*a) 去掉* 运行会显示如下错误:
txt += get_char(a)
TypeError: get_char() missing 2 required positional arguments: 'g' and 'b'
这个*是什么意思呢?
本帖最后由 smallwh 于 2024-7-14 17:10 编辑
txt += get_char(*a) 中 * 表示对序列进行解包,将序列中的每一个元素作为一个参数传入,说白了就是拆开序列
get_char(*a) 就好比 get_char(a[0],a[1],a[2],...,a[len(a)-1]) 【但不能这样写】
例子如下:
- #func 函数打印传入参数的数量,并输出传入的参数
- >>> a = [1,2,3]
- >>> func(a)
- 传入1个参数
- [1, 2, 3]
- >>> func(*a)
- 传入3个参数
- 1 2 3
复制代码
下面是 func 函数的代码,里面便有用 * 解包的例子
- def func(*args): #传入不确定数量的参数的写法
- print('传入{}个参数'.format(len(args))) #得到的args是一个元组
- print(*args) #对元组解包并打印
复制代码
|
|