【原创】pythonchalleng——第14题

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

2011-09-18_204746

这道题的提示如下:

      • <!-- remember: 100*100 = (100+99+99+98) + (... –>
      • 下面的图片,wire.png。

                起初真不知道这道题该怎么做……于是上网查找提示信息。终于有了想法。wire.png是10000*1的图片。第一条提示100*100=(100+99+99+98) + (... ,从这可以看出,10000个像素点可以按照100+99+99+98+…分割。这不就是上面图片螺旋分配像素的提示嘛。举个例子,10*10的图片如下:

          0   1   2   3   4   5   6   7   8   9

        35   …                                       10

        34                                             11

        33                                             12

        32                                             13

        31                                             14

        30                                             15

        29                                             16

        28                                             17

        27 26 25 24 23 22 21 20 19 18

                OK了,现在知道应该什么处理了,好了,上代码:

        # coding:utf-8 
        __author__ = 'haiquan' 
        import Image 
        import math 
        #按照图片提示,将wire.png中的10000个像素按照螺旋的方式写入新的图片中。 
        def spiralDealPic(path): 
            img=Image.open(path) 
            print img.size 
            width=height=(int)(math.sqrt(img.size[0])) 
            newpic=Image.new("RGB",(width,height)); 
            length=img.size[0] 
            counter=0 
            layer=0 
            while counter<length: 
                for i in range(layer,width-layer): 
                    pixel=img.getpixel((counter,0)) 
                    counter+=1 
                    newpic.putpixel((i,layer),pixel) 
                for i in range(layer+1,height-layer): 
                    pixel=img.getpixel((counter,0)) 
                    counter+=1 
                    newpic.putpixel((width-layer-1,i),pixel) 
                for i in range(width-layer-2,layer-1,-1): 
                    pixel=img.getpixel((counter,0)) 
                    counter+=1 
                    newpic.putpixel((i,height-layer-1),pixel) 
                for i in range(height-layer-2,layer,-1): 
                    pixel=img.getpixel((counter,0)) 
                    counter+=1 
                    newpic.putpixel((layer,i),pixel) 
                layer+=1 
            newpic.save('14.png') 
            newpic.show() 
        if __name__ == '__main__': 
            spiralDealPic('wire.png') 
          

                好了,现在看看我们转换后的图片是什么样的。

        14

        好了,我们知道这是什么动物了吧,对,是cat。让我们试一试新的url了吧, http://www.pythonchallenge.com/pc/return/cat.html,看到如下画面:

        2011-09-18_211001

        嗯,作者提示我们它的猫叫uzi,那我们再试一试, http://www.pythonchallenge.com/pc/return/uzi.html。OK,顺利进入第15题。

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

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

      抵扣说明:

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

      余额充值