SpinAnimation
""" | |
Author: DZ Chan | |
Date: 2017-09-24 | |
Description: This is a animation generator | |
""" | |
from PIL import Image, ImageDraw | |
import sys, math | |
''' | |
according to the definition in WIKI: | |
https://zh.wikipedia.org/wiki/%E6%9E%81%E5%9D%90%E6%A0%87%E7%B3%BB | |
''' | |
def clearPixels(img, theta1, theta2): | |
SIZE = img.size | |
CENTER_POINT = (SIZE[0]/2, SIZE[1]/2) | |
for x in range(SIZE[0]): | |
for y in range(SIZE[1]): | |
relative_point = (x - CENTER_POINT[0], y - CENTER_POINT[1]) | |
theta = math.atan2(relative_point[1], relative_point[0]) | |
theta = theta * 180 / math.pi + 180 | |
if theta2 > 360: | |
if theta >= theta1 or theta < theta2 - 360: | |
draw = ImageDraw.Draw(img, 'RGBA') | |
draw.point([x, y], (0, 0, 0, 0)) # write null pixel | |
continue | |
if theta >= theta1 and theta < theta2: | |
draw = ImageDraw.Draw(img, 'RGBA') | |
draw.point([x, y], (0, 0, 0, 0)) # write null pixel | |
if __name__ == '__main__': | |
img = Image.open(sys.argv[1]).convert('RGBA') | |
MAX_NUM = int(sys.argv[2]) | |
for i in range(MAX_NUM): | |
copy = img.copy() | |
angles = int((i / MAX_NUM) * 360) | |
print('generating angle:' + str(angles)) | |
clearPixels(copy, 90, angles+90) | |
copy.save('red-animations/red_ani_' + str(i) + '.png', 'PNG') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment