gif.py

Created by schraf

Created on October 25, 2021

4.98 KB

Explications en vidéo


from kandinsky import fill_rect
from time import sleep

img = b"!3K#%$7#)$4#-$1#-#2#&#R#.#1#)#P#.#/#-#N#.#-#0#L#/#-#0#K#0#-#1#J#0#,#2#I#2#+#3#I#1#,#2#I#0#-#3#H#/#/#3#G#/#0#3#E#+#$#$#1#3#E#*#6#4#C#+#6#5#A#-#4#7#@#.#3#7#?#/#3#8#>#/#3#9#<#1#2#8#=#1#1#9#=#1#1#:#<#1#0#;#<#2#.#=#;#2#0#;#:#3#1#:#;#2#1#:#;#2#1#:#;#2#1#:#:#3#1#9#;#3#1#2###%#>#3#2#1###%#>#3#2#5#>#4#2#3#?#4#2#0#B#5#1#1#B#6#/#1#C#:#*#2#C#@###2#C#R#B#R#2!3K#%$7#)$4#-$1#-#2#&#R#.#1#)#P#.#/#-#N#.#-#0#L#/#-#0#K#0#-#1#J#0#,#2#I#2#+#3#I#1#,#2#I#0#-#3#H#/#/#3#G#/#0#3#E#+#$#$#1#3#E#*#6#4#C#+#6#5#A#-#4#7#@#.#3#7#?#/#3#8#>#/#3#9#<#1#2#8#=#1#1#9#=#1#1#:#<#1#0#;#<#2#.#=#;#2#0#;#:#3#1#:#;#2#1#:#;#2#1#:#;#2#1#:#:#3#1#9#;#3#1#2###%#>#3#2#1###%#>#3#2#5#>#4#2#3#?#4#2#0#B#5#1#1#B#6#/#1#C#:#*#2#C#@###2#C#R#B#R#2!,6#$$5#+$2#-#2#'#R#-#0#*#P#/#.#,#O#/#,#/#N#/#,#/#N#/#,#0#M#0#,#/#M#0#,#/#L#0#-#0#K#0#,#1#K#0#,#1#N#-#-#1#L#*###$#/#0#K#+#2#1#J#*#6#.#J#*#6#.#J#*#6#.#I#+#6#.#H#-#5#.#H#-#,#$#)#/#F#/#*#%#)#/#F#/#)#&#(#0#F#/#)#&#(#0#F#0#(#&#(#0#E#1#'#'#'#2#D#1#%#(#(#2#D#1#$#(#)#2#D#8#*#2#D#7#+#3#C#6#,#3#C#5#-#3#C#3#/#3#C#3#0#2#C#2#1#3#B#2#1#3#B#3#0#3#B#3#0#4#A#3#0#4#A#3#0#5#@#3#0#6#?#3#0#6#?#2#1#6#?#3#0#6#@#2#1#6#?#2#1#6#?#1#2#7#>#1#2#7#.!'Q##$;##$:#%#;#(#M#(#7#.#I#,#####2#/#H#.#1#2#F#/#1#2#F#0#/#4#D#####1#-#4#F#0#.#5#E#1#-#5#E#1#-#5#E#1#-#6#D#1#(###'#5#D#0#'#&#&#5#D#-#*#&#&#5#F#####)#*#&#(#3#F#####)#*#%#+#1#G#+#)#%#+#1#G#+#(#&#*#2#G#,#&#&#+#1#H#-###'#,#1#G#3#-#1#G#2#-#1#G#2#.#1#G#2#.#2#E#2#/#2#E#1#/#3#E#1#0#3#D#2#.#4#D#2#.#4#D#3#.#3#D#3#.#4#B#4#.#4#B#4#.#4#B#4#.#5#@#5#.#5#@#5#.#5#@#5#.#0###'#?#5#.#0###(#=#6#.#0#$#(#<#6#.#/#%#(#<#5#/#0#%#'#;#6#/#0#%#'#;#6#/#0#%#'#;#6#/#1#%#'#;#5#/#1#%#'#;#5#/#2#$#(#:#6#.#2#%#'#;#4#/#3#$#(#:#4#/#3#$#(#;#3#/#3#%#(#+!)S#$#L###C#*#H#(#7#3#F#(#6#3#G#*#3#5#D#.#1#5#D#.#1#6#B#1#)#$#%#8#@#2#(#$#&#9#A#0#'#&#&#8#A#1#&#&#%#9#A#1#&#&#%#7#####A#1#&#%#&#9#A#1#&#%#'#8#A#/#'#&#*#6#@#.#&#'#,#5#@#########+#$#'#,#5#A###%#####)#$#&#,#6#E#0#-#6#D#1#-#6#E#/#.#0###'#E#.#.#5#F#0#-#5#F#0#-#4#G#0#-#3#G#2#,#3#G#2#,#4#F#2#,#4#E#3#,#4#E#3#,#4#E#3#-#4#D#3#-#4#C#5#,#4#C#5#,#4#B#6#-#4#A#6#-#4#A#6#-#5#?#7#-#/###(#>#7#-#/#$#(#<#8#-#/#$#'#=#'###1#.#/#%#'#;#'#$#1#.#0#$#'#;#'#%#0#.#0#%#'#:#'#%#/#/#1#$#'#:#'#%#/#/#1#%#'#9#(###0#/#2#$#'#:#'###1#/#1#$#(#9#7#/#2#$#'#:#6#/#2#$#'#:#5#0#2#$#(#:#4#0#2#$#(#,!+8###P###@#%#$#'#F#'#7#,#$#&#F#+#4#1#G#-#2#7#B#.#0#8#A#1#/#8#@#1#(#$#&#:#?#1#'#%#&#:#@#1#&#&#$#;#@#1#&#&#$#8###$#A#0#&#%#%#7#%###A#0#&#%#&#7#$###@#0#&#&#(#9#A#,#'#&#*#8#?#####-#%#&#+#8#?###%#+#$#'#+#7#@###%#1#+#8#C#1#,#9#B#1#,#2###(#C#/#-#0#######(#C#.#-#8#D#0#,#7#E#0#,#5#F#1#,#4#G#2#+#4#G#2#+#4#G#2#,#3#F#3#,#3#F#3#,#4#E#3#,#4#E#3#,#4#D#5#,#4#C#5#,#4#B#6#-#3#B#6#-#4#@#7#-#4#@#7#-#6#=#8#-#6#=#7#.#0###'#=#'###1#/#/###'#<#'#$#1#/#/#$#'#;#'#$#0#0#/#$#'#<#'#$#/#0#0###(#;#6#0#0#$#'#;#7#/#1###'#;#7#/#2###'#;#6#/#2###'#<#4#0#8#<#4#0#9#-!,2##$;#%$5#*$3#,$1#.#2#(#P#/#/#-#$###(###C#/#.#/#'#$#E#0#-#5#E#2#+#6#E#1#+#9#D#0#,#;#A#0#+#>#@#/#)#A#>#0#(#B#?#.#)#=#$#%#?#####*#*#'###9###$#@#####*#*#&#&#8#####A#+#*#%#'#8#####A#+#)#&#'#8#####B#+#(#&#&#;#A#,#'#&#&#<#A#-#%#&#'#<#A#.###&#(#<#A#3#(#1###,#@#3#)#2#%#)#@#2#)#5###(#A#1#*#<#@#2#*#:#B#2#)#####8#C#2#+#4#####E#2#,#3#G#2#-#2#G#2#,#3#G#2#-#3#E#4#,#3#E#4#-#2#E#4#-#3#D#4#.#2#D#4#.#2#C#5#.#3#B#4#0#3#A#4#0#4#@#4#1#3#@#4#1#4#?#4#1#4#@#3#1#5#?#4#0#5#@#3#1#4#@#2#2#4#0!/1##$9#'####$3#,$1#-#1#(#Q#####,#/#+#Q#.#-#-#P#.#,#/#O#/#+#/#O#.#,#0#M#0#,#0#L#0#+#2#K#0#+#2#J#0#,#3#J#/#+#4#J#/#*#5#J#.#.#3#J#*#1#5#H#)#4#5#E#*#6#4#D#*#5#4#D#,#4#0#%###D#-#3#0#G#.#2#4#D#/#0#5#D#/#-###$#4#E#0#+#%###3#F#0#*#9#E#0#)#:#D#2#(#'###5#C#2#(#&#%#4#C#2#&#'#&#3#D#;#&#3#E#9#'#3#E#7#)#2#F#6#+#2#E#5#,#2#E#4#.#1#E#3#/#1#E#2#0#2#D#2#0#2#D#2#1#1#D#2#1#1#D#2#1#2#C#2#1#2#D#1#2#1#E#0#2#1#E#0#2#1#4!0M##$7#(#$###2#'#S#,#/#+#Q#.#-#,#P#.#-#.#P#-#,#/#O#/#+#0#N#/#+#0#N#/#+#0#M#/#,#0#M#/#,#0#M#0#+#0#M#/#-#0#M#.#-#0#L#.#.#1#K#.#-#2#K#*#0###%#0#$###F#*#6#1#G#*#7#/#G#,#6#/#F#.#6#.#F#.#5#/#F#.#5#0#E#/#4#0#D#0#3#1#D#1#2#1#D#1#2#2#C#2#1#2#D#1#1#3#C#1#1#2#D#1#1#2#D#2#0#2#D#2#1#1#D#2#)#%#'#1#D#2#(#&#'#1#D#3#$#)#'#1#E#;#(#1#D#;#(#1#D#:#)#1#D#9#*#2#C#5#*#6#C#R#B#R#C#?###3#D#>#$#3#C#=#%#3#2!-J#%#9#)#O#*#4#-#L#,#2#.#K#.#1#/#J#.#1#/#J#.#0#0#J#.#0#1#I#.#0#1#H#/#/#2#I#/#.#2#H#0#.#2#I#.#.#4#H#.#.#4#H#.#/#3#H#-#0#4#G#*#####3#2#G#*#7#0#G#*#8#0#E#+#8#0#E#,#8#/#D#.#7#/#D#/#6#/#C#0#5#1#B#1#4#1#B#1#3#2#B#2#1#3#A#3#/#5#B#2#.#7#A#2#-#7#B#2#,#8#B#3#)#:#B#3#&#=#B#3###/###2#B#=#'#2#C#:#)#2#C#9#+#1#C#7#-#1#C#6#.#1#C#4#0#2#B#3#1#2#B#3#1#3#A#3#1#3#B#2#1#2#D#2#0#2#D#2#0#2#D#1#1#3#C#1#1#3#C#2#0#3#3"

COUL = [(0,0,0),(255,255,255)]
w,h = 80,55
r = 320 // w

def taille(n):
 return 54 * (n[0] - 35) + n[1] - 34

def remplir(x,y,t,c):
    while t > 0:
        d = min(t, w - x)
        fill_rect(r*x,2+r*y,r*d,r,c)
        x += d
        t -= d
        if x == w:
            x = 0
            y += 1
            if y >= h: y = 0
    return x,y   
       
def aff():
    i = 0
    x,y = 0,0
    while i < len(img):
     v = img[i] 
     if v == 32 or v == 33:
         c = v - 32
         i += 1
         sleep(.02)
     else:
         t = taille(img[i:i+2])
         x,y = remplir(x,y,t,COUL[c])
         i += 2
         c = 1 - c

while True: aff()