[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。
-
PIL.Image.frombytes()
从缓冲区中的像素数据创建图像副本。 -
Image.paste()
将另一图片粘贴到此图片中。