0%

Python Challenge (Level 11)

第11关

一张模糊的图片, 网页标题是odd even. 图片看起来像是由不同的图片叠加得到的, 要按照odd, even像素把它分开. 仍然是要用到Pillow模块. 为了方便分割, 我还用到了numpy

根据水平和垂直方向的奇偶位置, 把原图的像素分成四个部分, 每个部分形成一张小图, 有点像小波分解里的四个部分.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from PIL import Image
import numpy as np

im = Image.open('cave.jpg')
width, height = im.size
imdata = list(im.getdata())
imdata = np.array(imdata)
imdata = imdata.reshape((height, width, 3))

aa = imdata[0:height:2, 0:width:2, :]
hh = imdata[0:height:2, 1:width:2, :]
vv = imdata[1:height:2, 0:width:2, :]
dd = imdata[1:height:2, 1:width:2, :]
sub_imgs = [aa, hh, vv, dd]
im2 = Image.new(im.mode, (width/2, height/2))

for img in sub_imgs:
img = img.reshape((-1, 3)).tolist()
img = [tuple(x) for x in img]
im2.putdata(img)
im2.show()

显示出来的四张图片, aa和dd是一样的, hh和vv是一样的. 图片上可以得到通关信息evil 下一关: http://www.pythonchallenge.com/pc/return/evil.html