From 83daf583069082de2ab1994afbdfecb372fa0723 Mon Sep 17 00:00:00 2001 From: Bryan Steinbach Date: Fri, 24 Sep 2010 15:48:02 -0700 Subject: [PATCH] added network transmission format using pickle --- week3/problem1/client.py | 12 ++++++++++-- week3/problem1/server.py | 43 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/week3/problem1/client.py b/week3/problem1/client.py index 12e9608..8eceda4 100644 --- a/week3/problem1/client.py +++ b/week3/problem1/client.py @@ -1,7 +1,11 @@ +import cPickle as pickle import xmlrpclib import sys +import numpy as np +import pylab as pl + host,port = "localhost",5020 server = xmlrpclib.ServerProxy("http://%s:%d"%(host,port)) @@ -9,6 +13,10 @@ available_methods = server.system.listMethods() print available_methods -print server.system.methodHelp('add') +print server.system.methodHelp('double') + +imgfn = 'halfdome_from_northdome.jpg' +img = pl.imread(imgfn) -print server.add([1],2) +imgs = pickle.dumps(img) +arr = pickle.loads(imgs) diff --git a/week3/problem1/server.py b/week3/problem1/server.py index d8585bd..1c165e6 100644 --- a/week3/problem1/server.py +++ b/week3/problem1/server.py @@ -1,18 +1,47 @@ +import cPickle as pickle import SimpleXMLRPCServer +import numpy as np +import pylab as pl +from scipy import signal -class Arithmetic(object): - def add(self,a,b): - ''' Add two numbers together ''' - c = a[0]+b - print a,b,c - return c + +class ImageManipulation(object): + def __init__(self): + self.kernel = [[0.5,1,0.5],[1,1,1],[0.5,1.0,0.5]] + self.log_index = 0 + + def double(self,imagestr): + ''' Double size of an image by assuming image is band limited ''' + image = pickle.loads(imagestr) + pl.imsave('raw'+str(self.log_index)+'.png',image) + + def fxchan(x): + x = signal.resample(x,x.shape[0]*2,0,window='boxcar') + x = signal.resample(x,x.shape[1]*2,1,window='boxcar') + return x + + if len(image.shape) == 2: # Grey scale image + final_image = fxchan(image) + elif len(image.shape) == 3: # RGB Color + r,g,b = image[:,:,1],image[:,:,2],image[:,:,3] + final_r = fxchan(r) + final_g = fxchan(g) + final_b = fxchan(b) + final_image = np.array((final_r.shape[0],final_r.shape[1],3)) + final_image[:,:,1],final_image[:,:,2],final_image[:,:,3] = final_r,final_g,final_b + + pl.imsave('final'+str(self.log_index)+'.png',final_image) + + self.log_index += 1 + + return final_image host,port = "localhost",5020 server = SimpleXMLRPCServer.SimpleXMLRPCServer((host,port),allow_none=True) -server.register_instance(Arithmetic()) +server.register_instance(ImageManipulation()) server.register_multicall_functions() server.register_introspection_functions() -- 2.11.4.GIT