[Level 11]
Title: odd even
又是仅有图片的关卡,图片是模糊的,看似有重叠。想不出来。搜索了下,标题有奇偶的意思。奇偶,排列组合,慢慢尝试吧。
from PIL import Image
img = Image.open('cave.jpg')
for x in range(img.size[0]):
for y in range(img.size[1]):
img.putpixel((x//2,y//2),img.getpixel((x,y)))
img.show()
这个成功得到evil,[Level 12]
小结
如果先知道标题的意思,或许思路会更清晰。
Python Challenge Wiki
1. 取出坐标,可以怎样处理呢?
coords = []
for x in range(1,im.size[0],2):
for y in range(0,im.size[1],2):
coords.append( (x,y) )
for x in range(0,im.size[0],2):
for y in range(1,im.size[1],2):
coords.append( (x,y) )
draw = ImageDraw.Draw(im)
draw.point( coords, fill="black" )
使用[PIL.ImageDraw.Draw.point(xy, fill=None)](https://pillow.readthedocs.io/en/4.0.x/reference/ImageDraw.html#PIL.ImageDraw.PIL.ImageDraw.Draw.point)在给定的位置上绘点,fill参数指定颜色。
####2. 反正处理的是二进制数据。
> `img.putdata(list(img.getdata())[0::2])`
将[`Image.getdata(band=None)`](https://pillow.readthedocs.io/en/4.0.x/reference/Image.html#PIL.Image.Image.getdata)返回的序列对象切割后再放回。
####3. 有点意外的方法
使用[`Image.resize(size, resample=0)`](https://pillow.readthedocs.io/en/4.0.x/reference/Image.html#PIL.Image.Image.resize)或[`Image.transform(size, method, data=None, resample=0, fill=1)`](https://pillow.readthedocs.io/en/4.0.x/reference/Image.html#PIL.Image.Image.transform)。两方法都是重整图片。
####[More](http://wiki.pythonchallenge.com/index.php?title=Level11:Main_Page)