Python challenge 12

在PythonChallenge网站上,通过解析HTML代码和使用PIL库操作图像,实现将一张混沌图片中奇数像素点和偶数像素点分开,形成两幅相同的图案,最终获取通关密码evil。

第十二题地址:http://www.pythonchallenge.com/pc/return/5808.html



打开地址看到一张很混沌的图片,完全没有提示,依旧是查看HTML代码。

<title>odd even</title>

外加能下载到一张cave的图片。搜索网上的解决方案,是将两幅重合在一起的图分开,并且根据第奇数个像素点和偶数个像素点分开,各自组合成一幅图。



from PIL import Image

filename = 'C:\Python27\cave.jpg'

img = Image.open(filename)

width = img.size[0]
height = img.size[1]

odd = even = Image.new(img.mode, (width/2, height/2))

for x in range(width):
    for y in range(height):
        pixel = img.getpixel((x,y))
        # odd
        if x % 2 == 0 and y % 2 == 0:
            odd.putpixel((x/2, y/2), pixel)
        elif x % 2 == 1 and y % 2 == 1:
            odd.putpixel(((x-1)/2, (y-1)/2), pixel)
        # even
        elif x % 2 == 1 and y % 2 == 0:
            even.putpixel(((x-1)/2, y/2), pixel)
        elif x % 2 == 0 and y % 2 == 1:
            even.putpixel((x/2, (y-1)/2), pixel)


odd.save('C:\Python27\\12-odd.jpg')
even.save('C:\Python27\\12-even.jpg')

新建图像,然后取奇数,偶数的像素点分别填入新建的图像。最后得到两幅图的图案是相同的。




得到通关密码 evil。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值