|
@ -6,24 +6,31 @@ from itertools import product |
|
|
import string |
|
|
import string |
|
|
import numpy as np |
|
|
import numpy as np |
|
|
from PIL import Image |
|
|
from PIL import Image |
|
|
from cat import cat |
|
|
from cat import cat, cat_says |
|
|
|
|
|
from igel import igel |
|
|
|
|
|
import argparse |
|
|
|
|
|
|
|
|
# open image to be sent |
|
|
# parser stuff |
|
|
image = sys.argv[1] |
|
|
parser = argparse.ArgumentParser( |
|
|
im = Image.open(image) |
|
|
prog='FluffyPixelfluter', |
|
|
|
|
|
description='used to paint Pixelflut canvas',) |
|
|
pixels = list(im.getdata()) |
|
|
parser.add_argument('hostname') |
|
|
width, height = im.size |
|
|
parser.add_argument('port') |
|
|
pixels = [pixels[i * width:(i + 1) * width] for i in range(0,height)] |
|
|
parser.add_argument('-i','--image') |
|
|
|
|
|
parser.add_argument('-r','--random', action='store_true') |
|
|
HOST, PORT = "px.oeinf.de", 1234 |
|
|
parser.add_argument('-c','--cat', action='store_true') |
|
|
|
|
|
parser.add_argument('-cs','--catsays') |
|
|
|
|
|
parser.add_argument('-ig','--igel', action='store_true') |
|
|
|
|
|
parser.add_argument('-wd','--width', default=0) |
|
|
|
|
|
parser.add_argument('-ht','--height', default=0) |
|
|
|
|
|
args = parser.parse_args() |
|
|
|
|
|
HOST, PORT = args.hostname, int(args.port) |
|
|
|
|
|
|
|
|
# change start point if requested |
|
|
# change start point if requested |
|
|
starth, startw = 0, 0 |
|
|
starth = int(args.height) |
|
|
if len(sys.argv) > 2: starth = int(sys.argv[2]) |
|
|
startw = int(args.width) |
|
|
if len(sys.argv) > 3: startw = int(sys.argv[3]) |
|
|
|
|
|
rnd = False |
|
|
rnd = args.random |
|
|
if len(sys.argv) > 4: rnd = sys.argv[4] == "rnd" |
|
|
|
|
|
|
|
|
|
|
|
# Create a socket (SOCK_STREAM means a TCP socket) |
|
|
# Create a socket (SOCK_STREAM means a TCP socket) |
|
|
# Connect to server and send data |
|
|
# Connect to server and send data |
|
@ -37,6 +44,16 @@ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: |
|
|
sizew = int(received.split(" ")[1]) |
|
|
sizew = int(received.split(" ")[1]) |
|
|
sizeh = int(received.split(" ")[2]) |
|
|
sizeh = int(received.split(" ")[2]) |
|
|
|
|
|
|
|
|
|
|
|
# open image to be sent or query a cat image |
|
|
|
|
|
if args.cat: im = cat(sizew,sizeh) |
|
|
|
|
|
elif args.catsays: im = cat_says(args.catsays,sizew,sizeh) |
|
|
|
|
|
elif args.igel: im = Image.open(igel()) |
|
|
|
|
|
elif args.image: im = Image.open(args.image) |
|
|
|
|
|
|
|
|
|
|
|
pixels = list(im.getdata()) |
|
|
|
|
|
width, height = im.size |
|
|
|
|
|
pixels = [pixels[i * width:(i + 1) * width] for i in range(0,height)] |
|
|
|
|
|
|
|
|
# create list of stuff and shuffle if requested |
|
|
# create list of stuff and shuffle if requested |
|
|
widthlist = list(range(0 + startw,min(int(sizew),(width+startw)))) |
|
|
widthlist = list(range(0 + startw,min(int(sizew),(width+startw)))) |
|
|
heightlist = list(range(0 + starth, min(int(sizeh),(height+starth)))) |
|
|
heightlist = list(range(0 + starth, min(int(sizeh),(height+starth)))) |
|
@ -44,7 +61,8 @@ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: |
|
|
for w in widthlist: |
|
|
for w in widthlist: |
|
|
if rnd: np.random.shuffle(heightlist) |
|
|
if rnd: np.random.shuffle(heightlist) |
|
|
for h in heightlist: |
|
|
for h in heightlist: |
|
|
color = '#%02x%02x%02x' % pixels[h-starth][w-startw] |
|
|
if pixels[h-starth][w-startw][3] == 0: continue |
|
|
|
|
|
color = '#%02x%02x%02x' % pixels[h-starth][w-startw][0:3] |
|
|
to_send = "px {} {} {}\n".format(w,h,color) |
|
|
to_send = "px {} {} {}\n".format(w,h,color) |
|
|
sock.sendall(bytes(to_send, "utf-8")) |
|
|
sock.sendall(bytes(to_send, "utf-8")) |
|
|
sock.close() |
|
|
sock.close() |
|
|