[Level 22]
Title: emulate
源码提示
or maybe white.gif would be more bright
下载的white.gif是200*200的黑色图片。尝试的时候范围弄错,没辙了。
from PIL import Image,ImageDraw
img = Image.open('white.gif')
new = Image.new('RGB', img.size)
draw = ImageDraw.Draw(new)
cx, cy = 0, 100
for frame in range(img.n_frames):#133
img.seek(frame)
left, upper, right, lower = img.getbbox()
dx, dy= (left - 100)/2, (upper - 100)/2
if dx == dy == 0:
cx, cy = cx+30, 100
cx, cy = cx+dx, cy+dy
draw.point([cx, cy])
new.show()
图片是动态图,每一帧都有一个独特的点,围绕在坐标(100, 100)附近。22关图片里是操纵杆。那么向相对(100, 100)的点的方向画线,回到原点平移一段距离后再画线(保证所画的线不重叠),最终得到5组图形,收获bonus,[Level 23]
小结
感觉脑子不够用了。
-
Image.getbbox()
返回图像非零区域的边框。 -
Image.seek(frame)
定位文件的帧。 -
PIL.ImageDraw.Draw.point(xy, fill=None)
在给定的坐标上绘点。
Python Challenge Wiki
img.n_frames
相当于ImageSequence.Iterator(img)
,获取帧数。