summaryrefslogtreecommitdiff
path: root/gif.py
diff options
context:
space:
mode:
authordavidovski <david@davidovski.xyz>2021-10-31 00:31:46 +0100
committerdavidovski <david@davidovski.xyz>2021-10-31 00:31:46 +0100
commit3a396753ef985699b52dd056796f338415c99b37 (patch)
treeba121cd2215e12d4ecbc8a0393aa66faba20b44c /gif.py
parent83ea97d28fe569e90311713379fdb47c453a3a1c (diff)
added gif image generation
Diffstat (limited to 'gif.py')
-rw-r--r--gif.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/gif.py b/gif.py
new file mode 100644
index 0000000..9f0c699
--- /dev/null
+++ b/gif.py
@@ -0,0 +1,64 @@
+import glob
+import math
+import random
+from PIL import Image
+
+
+def color(hex_value):
+ h = hex_value.lstrip('#')
+ while len(h) < 8:
+ h += "f"
+ return tuple(int(h[i:i+2], 16) for i in (0, 2, 4, 6))
+
+def rgb_to_v(c):
+ r, g, b = c[0]/255.0, c[1]/255.0, c[2]/255.0
+ mx = max(r, g, b)
+ v = mx*100
+ return v
+
+replace = color("#f58f44")
+colors = [
+ color("#191919"),
+ color("#282a2e"),
+ color("#373b41"),
+ color("#f58f44")
+ ]
+
+sorted(colors, key=rgb_to_v)
+p = len(colors)
+
+def make(filename, inp=None):
+ w = int(256 / p) * p
+ h = int(256 / p) * p
+
+ frames = []
+
+ for i in range(int(p*1*math.pi)):
+ if inp is None:
+ image = Image.new("RGBA", (w, h), colors[0])
+ else:
+ image = Image.open(inp)
+
+ for x in range(image.width):
+ for y in range(image.height):
+ f = 2
+ r = random.randint(-f, f)
+ z = (i) - (y/(p/4)) + r
+ v = math.floor( (math.sin(z) + 1) * len(colors) * 0.5)
+ c = colors[v]
+ if inp is not None:
+ existing = image.getpixel((x, y))
+ if existing == replace:
+ image.putpixel((x,y), c)
+ else:
+ image.putpixel((x,y), c)
+
+ frames.append(image)
+
+
+ frames[0].save(filename, format="GIF", append_images=frames[1:], save_all=True, duration=100, loop=0)
+
+make("images/bg.gif")
+make("images/remotecontrol.gif", inp="images/remotecontrol.png")
+
+