Python Challenge[22]

2017-02-18  本文已影响0人  Recgat

[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]

小结

感觉脑子不够用了。

  1. Image.getbbox()返回图像非零区域的边框。
  2. Image.seek(frame)定位文件的帧。
  3. PIL.ImageDraw.Draw.point(xy, fill=None)在给定的坐标上绘点。

Python Challenge Wiki

img.n_frames相当于ImageSequence.Iterator(img),获取帧数。

More

上一篇 下一篇

猜你喜欢

热点阅读