python挑战之level 16

连接为:http://www.pythonchallenge.com/pc/return/mozart.html

登陆账号密码:(huge,file)

——————————————————————————————————————————

一副混乱的图片,

标题:

<title>let me get this straight</title>
这是让我们把图片整理对齐
那么如何整理,不知道。百度一下

————————————————————————————————————————————

第一种方法:

from PIL import Image,ImageDraw
#获取原图像新建大小相同的图片
im = Image.open('mozart.gif')
w,h = im.size
nim = Image.new('RGB',im.size,0)
#图中红点的颜色值
magenta = 195
#从每行的遇到的第一个红条开始平移
for i in range(h):
    for j in range(w):
        if im.getpixel((j,i))==magenta:
            #把第一个红条右边的所有像素左移
            [nim.putpixel((k,i),im.getpixel(((k+j)%w,i))) for k in range(w)]
            break
nim.save('out16.gif')
——————————————————————————————————————————————————————————

这个方法我完全是参考一个哥们。的开始没明白什么意思,不会做

————————————————————————————————————————————————————
第二种方法:

from PIL import Image,ImageDraw
#获取原图像新建大小相同的图片
im = Image.open('mozart.gif')
w,h = im.size

#图中红点的颜色值
magenta = 195

#获取每一行第一个红条并保存在列表之中
bars=[]
for j in range(h):
    for i in range(w - 5):
        #红条长度大概在五个像素
        if im.getpixel((i,j)) == magenta and im.getpixel((i+4,j)) == magenta:
            bars.append((i,j))
print(bars[:10])


#从每行的遇到的第一个红条开始平移
shift = Image.new(im.mode, (w * 2, h), 0)
shift.palette = im.palette  # share colour table,分享颜色板
for j in range(h):
    for i in range(w):
        shift.putpixel((i + w - bars[j][0], j), im.getpixel((i,j)))

shift.save('shift.png')
——————————————————————————————————————————————————————————————————————————

在看完这两种方法后,我才发现,原来每行就一个红条,

所以结果就是:romance

下一关为:http://www.pythonchallenge.com/pc/return/romance.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值