【原创】pythonchalleng——第11题

来源:互联网 发布:好看的香港电影 知乎 编辑:程序博客网 时间:2024/06/07 14:36

        第十一题的网址:http://www.pythonchallenge.com/pc/return/5808.html,下面是该题目的截图,特此留念。

2011-09-03_132250

        能够找到的提示:

    • 页面标题:odd even
    • 页面图片:看起来好像是两张图片的合成。

根据上面的“奇偶”提示,应该是利用Image模块操作该图片,将两张图片分离。

        最初的思路是横纵坐标都为奇数的点组成一张图片;横纵坐标都为偶数的点组成一张图片。因为以前写过操作图片的例子(如果大家忘了,可以参考《【原创】pythonchalleng——第9题》),所以代码写起来比较轻松。但是得到的图片却不是像我想象的那样,根本没有任何提示信息。

        没有办法,于是上网搜索思路,发现原先的大体思路还是正确的,但是处理像素的时候有错误,应该是从左上角开始,第奇数个点保存在一张图片中;第偶数个点保存在一张图片中。下面给出自己写的代码。

''' 
Created on 2011-9-2 
@author: hengha 
''' 
import Image 
def dealOddandEven(path): 
    img=Image.open(path, 'r') 
    width=img.size[0] 
    height=img.size[1] 
     
    odd = even = Image.new(img.mode, (width/2, height/2))   
     
    for i in range(width): 
        for j in range(height): 
            pixel=img.getpixel((i,j)) 
            if i%2==0 and j%2==0: 
                even.putpixel((i/2,j/2),pixel) 
            elif i%2==1 and j%2==1: 
                even.putpixel(((i-1)/2,(j-1)/2), pixel) 
            elif i%2==1 and j%2==0: 
                odd.putpixel(((i-1)/2,j/2), pixel) 
            elif i%2==0 and j%2==1: 
                odd.putpixel((i/2,(j-1)/2), pixel) 
    odd.save('odd.jpg') 
    even.save('even.jpg') 
     
if __name__ == '__main__': 
    dealOddandEven('cave.jpg')

不知道是不是写的代码有问题,最后得到的两张图片居然一样……,效果如下:

odd   even

        从图片中我们可以看到evil字样,换到url中,看看效果。新的网址为http://www.pythonchallenge.com/pc/return/evil.html,可以顺利进入下一题,第12题。

0 0
原创粉丝点击