[Level 7]
Title: smarty
所有地方均无提示,图片中有一条灰色带,或许需要从这突破。图片处理需要pillow模块,第三方PIL库。然而,并没有什么思路,无奈求助谷歌。灰色带宽为43px到51px,长为0px到607px。获取该区间的的像素:
from PIL import Image
img = Image.open('oxygen.png')
for i in range(0,607):
img.getpixel((i,50))
第四个A值固定是255(表示完全不透明,A表示Alpha,透明度),且每七个为一组返回的像素相同(第一组5个)。ascii码占有255个位置,需要将返回的像素的R(G或B)值转为字符。
target = ''
for i in range(0,607,7):
target+ = chr(img.getpixel((i,50))[0])
print(target)
显示
smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]
再次转换print(''.join(chr(i) for i in [105, 110, 116, 101, 103, 114, 105, 116, 121])),得到integrity,[Level 8]
小结
-
Image.getpixel(xy)返回指定位置的像素。
Python Challenge Wiki
- 有点强,
Image.tobytes(encoder_name='raw', *args)返回图片的字节对象,截取其中的有效字节。
from PIL import Image
print(Image.open('oxygen.png').tobytes()[108188:110620:28])
2. 可以这样打开图片
> ```python
import io,urllib.request
img = Image.open(io.BytesIO(urllib.request.urlopen('http://www.pythonchallenge.com/pc/def/oxygen.png').read()))








网友评论