Pixelflut session 2021-10-09 FeM Office
This commit is contained in:
		
							
								
								
									
										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
 | 
			
		||||
		Reference in New Issue
	
	Block a user