Python challenge_7

第七题地址:http://www.pythonchallenge.com/pc/def/oxygen.html

刷新了两次,一直以为网速不给力,图片加载不清楚,然后查看源代码,也没有什么有效信息,只能直接查攻略了。知道要对图片进行处理,要用到第三方库函数PIL,完全没有碰过,先熟悉一下。http://blog.csdn.net/muyuxiaozi_2013/article/details/22174421

根据其他博客说的,先使用GIMP把图片里面的黑白条切出来,下了一个GIMP,这么高大上的图片处理工具,完全不会用,直接默默的偷看别人答案,黑白条的位置是box = (0,43,609,53),直接用Python来切了。

import Image
im = Image.open(r'D:\oxygen.png')
box = (0,43,609,53)
im = im.crop(box)
pixels = im.getdata()
print ('mode: %s' %im.mode)
print('number of pixel: %d' % len(pixels))
print(pixels[0])
lim = im.convert('L')
 
lpixels = lim.getdata()
 
print ''.join(chr(lpixels[i]) for i in range(0,609,7))
 

得到的结果是:smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]

然后再把这段list转成字符的形式

 

block = [105, 110, 116, 101, 103, 114, 105, 116, 121]
print(''.join(chr(x) for x in block))

最后得到的结果是:integrity

所以,下一题的网址是:http://www.pythonchallenge.com/pc/def/integrity.html

 

1、间隔为取一个数字的原因是网上有人用GIMP观察出来,每一个黑色小方块里面有七个像素,不会用GIMP,只能直接抄了。

2、为什么要转成modeL的形式,L是八位像素的黑白色,原本是RGBA的模式,每一个有四个变量值,用split()将三色通道分离,随便取一个通道来做转换也是可以的。

你可能感兴趣的:(python)