1import random 2from PIL import Image 3 4header = ('kS38,' 5 '1_16_2_16_3_16_11_255_12_255_13_255_4_-1_6_1000_7_1_15_1_18_0_8_1|' # bg 6 '1_16_2_16_3_16_11_255_12_255_13_255_4_-1_6_1001_7_1_15_1_18_0_8_1|' # g 7 '1_16_2_16_3_16_11_255_12_255_13_255_4_-1_6_1009_7_1_15_1_18_0_8_1|' # g2 8 '1_255_2_255_3_255_11_255_12_255_13_255_4_-1_6_1002_5_1_7_1_15_1_18_0_8_1|' # line 9 '1_255_2_255_3_255_11_255_12_255_13_255_4_-1_6_1005_5_1_7_1_15_1_18_0_8_1|' # obj 10 '1_0_2_200_3_255_11_255_12_255_13_255_4_-1_6_1006_5_1_7_1_15_1_18_0_8_1|,' # 3dl 11 'kA13,0,kA15,0,kA16,0,' 12 'kA14,0.00~0~1.00~0~2.00~0~3.00~0~4.00~0~5.00~0~6.00~0~7.00~0~8.00~0~9.00~0~10.00~0~11.00~0~12.00~0~13.00~0~14.00~0~15.00~0~16.00~0~17.00~0~18.00~0~19.00~0~20.00~0~21.00~0~22.00~0~23.00~0~24.00~0~25.00~0~26.00~0~27.00~0~28.00~0~29.00~0~30.00~0~31.00~0~32.00~0~33.00~0~34.00~0~35.00~0~36.00~0~37.00~0~38.00~0~39.00~0~40.00~0~41.00~0~42.00~0~43.00~0~44.00~0~45.00~0~46.00~0~47.00~0~48.00~0~49.00~0~50.00~0~51.00~0~52.00~0~53.00~0~54.00~0~55.00~0~56.00~0~57.00~0~58.00~0~59.00~0~60.00~0~61.00~0~62.00~0~63.00~0~64.00~0~65.00~0~66.00~0~67.00~0~68.00~0~69.00~0~70.00~0~71.00~0~72.00~0~73.00~0~74.00~0~75.00~0~76.00~0~77.00~0~78.00~0~79.00~0~80.00~0~81.00~0~82.00~0~83.00~0~84.00~0~85.00~0~86.00~0~87.00~0~88.00~0~89.00~0~90.00~0~91.00~0~92.00~0~93.00~0~94.00~0~95.00~0~96.00~0~97.00~0~98.00~0~99.00~0~100.00~0~101.00~0~102.00~0~103.00~0~104.00~0~105.00~0~106.00~0~107.00~0~108.00~0~109.00~0~110.00~0~111.00~0~112.00~0~113.00~0~114.00~0~115.00~0~116.00~0~117.00~0~118.00~0~119.00~0~120.00~0~121.00~0~122.00~0~123.00~0~124.00~0~125.00~0~126.00~0~127.00~0~128.00~0~129.00~0~130.00~0~131.00~0~132.00~0~133.00~0~134.00~0~135.00~0~136.00~0~137.00~0~138.00~0~139.00~0~140.00~0~141.00~0~142.00~0~143.00~0~144.00~0~145.00~0~146.00~0~147.00~0~148.00~0~149.00~0~150.00~0~,' 13 'kA6,13,kA7,0,kA17,0,kA18,0,kS39,0,' 14 'kA2,1,' # mode 15 'kA3,0,kA8,0,' 16 'kA4,3,' # speed 17 'kA9,0,kA10,0,kA11,0;') 18 19 20def createBg(x, y, scale, group, zorder=-5, editorl=0, zlayer=5, big=False): 21 bg = { 22 1: 917, # obj id 23 2: x, # x pos 1.875 + k * 3.75 24 3: y, # y pos 25 32: scale, # scale 26 57: group, # groups "1.2.3.4" 27 25: zorder, 28 20: editorl, 29 24: zlayer, # mid-3 top-5 30 21: 1, # dont fade 31 64: 1 32 } 33 if big == True: 34 bg[1] = 916 35 ret = [] 36 for k, v in bg.items(): 37 ret.append(str(k)) 38 ret.append(str(v)) 39 return ','.join(ret) + ';' 40 41 42def createAlpha(x, y, scale, target, fadeTime, opacity): 43 alpha = { 44 1: 1007, # obj id 45 2: x, # x pos 46 3: y, # y pos 47 32: scale, # scale 48 36: 1, 49 51: target, # target group 50 10: fadeTime, # fade time 51 35: f'{opacity:.3f}' # opacity 52 } 53 ret = [] 54 for k, v in alpha.items(): 55 ret.append(str(k)) 56 ret.append(str(v)) 57 return ','.join(ret) + ';' 58 59 60def createToggle(x, y, scale, target, activate): 61 toggle = { 62 1: 1049, # obj id 63 2: x, # x pos 64 3: y, # y pos 65 32: scale, # scale 66 36: 1, 67 51: target, # target group 68 56: activate, # activate 69 } 70 ret = [] 71 for k, v in toggle.items(): 72 ret.append(str(k)) 73 ret.append(str(v)) 74 return ','.join(ret) + ';' 75 76 77def createMove(x, y, scale, target, movex, movey, time, easing, lockpx=0): 78 move = { 79 1: 901, # obj id 80 2: x, # x pos 81 3: y, # y pos 82 32: scale, # scale 83 36: 1, 84 51: target, # target group 85 28: movex, # movex 86 29: movey, 87 10: time, 88 30: easing, 89 58: lockpx, 90 # 59: lockpy 91 # 25: zorder, 92 # 20: editorl, 93 # 24: zlayer # mid-3 top-5 94 } 95 ret = [] 96 for k, v in move.items(): 97 ret.append(str(k)) 98 ret.append(str(v)) 99 return ','.join(ret) + ';'100101102if __name__ == '__main__':103 print(header, end='')104 im = Image.open('images80/video_000000.png')105 im = im.convert('L')106 imload = im.load()107 # im.show()108 w, h = im.size # 104x78109110 for y in range(h):111 for x in range(w):112 xpos = 1.875 + 3.75 * x + 15 * 5113 ypos = (1.875 + 3.75 * h) - (1.875 + 3.75 * y) + \114 10 * 30 / 2 - (1.875 + 3.75 * h) / 2115 g = y * w + x + 100116 print(createBg(xpos, ypos, 0.5, str(g) + '.1'), end='')117118 print(createMove(195, 500, 0.5, 1, 0, 0, 999, 0, 1), end='')119120 cnt = 0121 for y in range(h):122 for x in range(w):123 xpos = 0124 ypos = 500 + 5 * cnt125 g = y * w + x + 100126 print(createToggle(xpos, ypos, scale=0.5,127 target=g, activate=0), end='')128 cnt += 1129130 for frame in range(0, 6571): # 6571131 prevload = imload132 im = Image.open(f'images80/video_{frame:06}.png')133 im = im.convert('L')134 imload = im.load()135 cnt = 0136 xpos = 15.6 * frame137 for y in range(h):138 for x in range(w):139 ypos = 500 + 5 * cnt140 g = y * w + x + 100141 if prevload[x, y] <= 128 and imload[x, y] > 128:142 print(createToggle(xpos, ypos, scale=0.5,143 target=g, activate=1), end='')144 cnt += 1145 elif prevload[x, y] > 128 and imload[x, y] <= 128:146 print(createToggle(xpos, ypos, scale=0.5,147 target=g, activate=0), end='')148 cnt += 1