Pixelflut session 2021-10-09 FeM Office
This commit is contained in:
commit
d3202f30d1
75
gif.py
Executable file
75
gif.py
Executable file
@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import socket
|
||||
import random
|
||||
import time
|
||||
import pprint
|
||||
|
||||
IP_ADDRESS = "2001:638:904:ffc9::2"
|
||||
PORT = 1234
|
||||
|
||||
O_X = 100
|
||||
O_Y = 500
|
||||
|
||||
from PIL import Image
|
||||
|
||||
gif = Image.open("tube.gif")
|
||||
print(gif.n_frames)
|
||||
|
||||
frames = []
|
||||
try:
|
||||
for i in range(gif.n_frames):
|
||||
gif.seek(i)
|
||||
|
||||
try:
|
||||
d = gif.duration
|
||||
except AttributeError:
|
||||
d = 0.1
|
||||
|
||||
im = gif.copy()
|
||||
|
||||
im = im.convert("RGB")
|
||||
im.thumbnail((200,300), Image.ANTIALIAS)
|
||||
|
||||
_,_,w,h = im.getbbox()
|
||||
|
||||
|
||||
stream = []
|
||||
for x in range(w):
|
||||
for y in range(h):
|
||||
r,g,b = im.getpixel((x,y))
|
||||
stream.append("PX {} {} {:02X}{:02X}{:02X}\n".format(x+O_X,y+O_Y,r,g,b).encode("utf-8"))
|
||||
|
||||
random.shuffle(stream)
|
||||
#pprint.pprint(stream)
|
||||
|
||||
frames.append({
|
||||
"time": d,
|
||||
"stream": stream,
|
||||
})
|
||||
except EOFError:
|
||||
pass
|
||||
|
||||
|
||||
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
|
||||
s.connect((IP_ADDRESS, PORT))
|
||||
|
||||
frames_n = len(frames)
|
||||
f = 0
|
||||
while True:
|
||||
stream = frames[f]["stream"]
|
||||
end_time = time.time() + frames[f]["time"]
|
||||
|
||||
stream_n = len(stream)
|
||||
print("stream_n:", stream_n)
|
||||
p = 0
|
||||
while time.time() < end_time:
|
||||
for x in range(1000):
|
||||
s.send(stream[p])
|
||||
p += 1
|
||||
if p >= stream_n:
|
||||
p = 0
|
||||
|
||||
f +=1
|
||||
if f >= frames_n:
|
||||
f = 0
|
47
grid.py
Normal file
47
grid.py
Normal file
@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import socket
|
||||
import random
|
||||
|
||||
IP_ADDRESS = "2001:638:904:ffc9::2"
|
||||
PORT = 1234
|
||||
|
||||
W = 1920
|
||||
H = 1080
|
||||
|
||||
s_w = 10
|
||||
s_c = "FFC0CB"
|
||||
|
||||
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
|
||||
s.connect((IP_ADDRESS, PORT))
|
||||
|
||||
x = W//2
|
||||
y = H//2
|
||||
d = 0
|
||||
c = 0
|
||||
|
||||
while True:
|
||||
if x > W or x < 0 or y > H or y < 0:
|
||||
x = W//2
|
||||
y = H//2
|
||||
|
||||
if c >= 0:
|
||||
d = (d+random.randint(-1,1)) % 4
|
||||
c = random.randint(0, 10)
|
||||
|
||||
if d == 0:
|
||||
x += 0
|
||||
y += -1
|
||||
elif d == 1:
|
||||
x += 1
|
||||
y += 0
|
||||
elif d == 2:
|
||||
x += 0
|
||||
y += 1
|
||||
elif d == 3:
|
||||
x += -1
|
||||
y += 0
|
||||
|
||||
s.send("PX {} {} {}\n".format(x,y, s_c).encode("utf-8"))
|
||||
|
||||
c += 1
|
49
snake.py
Executable file
49
snake.py
Executable file
@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import socket
|
||||
import random
|
||||
|
||||
IP_ADDRESS = "2001:638:904:ffc9::2"
|
||||
PORT = 1234
|
||||
|
||||
W = 1920
|
||||
H = 1080
|
||||
|
||||
s_w = 10
|
||||
s_c = "FFC0CB"
|
||||
|
||||
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
|
||||
s.connect((IP_ADDRESS, PORT))
|
||||
|
||||
x = W//2
|
||||
y = H//2
|
||||
d = 0
|
||||
c = 0
|
||||
|
||||
while True:
|
||||
|
||||
if c < 0:
|
||||
d = (d+random.randint(-1,1)) % 4
|
||||
c = random.randint(80, 100)
|
||||
|
||||
if d == 0:
|
||||
x += 0
|
||||
y += -1
|
||||
elif d == 1:
|
||||
x += 1
|
||||
y += 0
|
||||
elif d == 2:
|
||||
x += 0
|
||||
y += 1
|
||||
elif d == 3:
|
||||
x += -1
|
||||
y += 0
|
||||
|
||||
x = x%W
|
||||
y = y%H
|
||||
|
||||
for i in range(s_w):
|
||||
j = i - s_w//2
|
||||
s.send("PX {} {} {}\n".format(x+j,y+j, s_c).encode("utf-8"))
|
||||
|
||||
c -= 1
|
Loading…
Reference in New Issue
Block a user