Python Challenge[25]

[Level 25]


Title: imagine how they sound

源码中看到can you see the waves?,还有图片是lake1.jpg,按套路尝试,并没有图片。waves?之前有 wav 格式的音频,试了下,得到 lake1.wav,但却是一片杂音。

但是也到此为止了。没有尝试 lake2.wav,lake3.wav……而一直到lake25.wav为止共有25个wav文件。

下载 wav 文件:

import httplib2
h = httplib2.Http('.Cache')
url = 'http://www.pythonchallenge.com/pc/hex/lake{0}.wav'
headers = {'Authorization': 'Basic YnV0dGVyOmZseQ=='}
for i in range(1,26):
  data = h.request(url.format(i),headers=headers)[1]
  with open('lake/lake{0}.wav'.format(i),'wb') as f:
    f.write(data)

把25个wav文件整成一个大小为300*300的图片:

import wave
from PIL import Image
res = Image.new('RGB',(300,300))
ws = [wave.open('lake/lake{0}.wav'.format(i)) for i in range(1,26)]
for i in range(25):
  data = ws[i].readframes(ws[i].getnframes())
  im = Image.frombytes('RGB',(60,60),data)
  res.paste(im,(60*(i%5),60*(i//5)))
res.show()

得到decent[Level 26]

小结

一个wav文件有10800帧,每三帧为一像素,所以一个wav文件有3600像素(60*60),25个就是300*300。

  1. PIL.Image.frombytes()从缓冲区中的像素数据创建图像副本。
  2. Image.paste()将另一图片粘贴到此图片中。

Python Challenge Wiki

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,049评论 25 709
  • 本文是pythonchallenge的33道谜题的全部提示。这是一个非常有趣的网站,强烈推荐有些编程基础的同学尝试...
    nuqiewuoz阅读 6,038评论 0 51
  • 本文转自 python数字图像处理 基于python脚本语言开发的数字图片处理包,比如PIL,Pillow, op...
    jiandanjinxin阅读 148,046评论 8 89
  • 我们认识的人越来越多,但是能联系的却越来越少,昨天和一位本科的师姐联系,她跟我说,有没有感觉有时候很孤单,我笑着说...
    jcl阳光依旧阅读 1,833评论 0 0
  • 在常规CTF的sql注入的时候都会过滤一些我们不喜欢被过滤的字符,比如这次的逗号,在盲注的时候用到substr函数...
    Sund4y阅读 11,828评论 0 0