summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgradient.py89
-rwxr-xr-xpbserver.py23
2 files changed, 65 insertions, 47 deletions
diff --git a/gradient.py b/gradient.py
index 1fa8e9f..6d2e15f 100755
--- a/gradient.py
+++ b/gradient.py
@@ -47,16 +47,7 @@ WORKING_DIR = '/var/www/cache'
DEFAULT_WIDTH = "200"
DEFAULT_HEIGHT = "200"
-BEVELVALUES = {
- "flatout": ["-s","-m","outer"],
- "flatinner": ["-s","-m","inner"],
- "evenlyframed": ["-s ", "-m ", "split"],
- "biginner": ["-s","-m","outer","-c","50","-b","red","-a","25"],
- "bigouter": ["-s","-m","split","-c","50","-b","red","-a","25"],
- "dramaticflatout": ["-s","-m","outer","-a","25","-b","blue"],
- "dramaticflatinner": ["-s","-m","outer","-a","25","-b","blue"],
- }
-BEVEL_DEFAULT = "12";
+DEFAULT_BEVEL_PERCENT = "12";
HALFTONEVALUES = {
"checkeredfade": "h6x6a",
@@ -67,6 +58,24 @@ HALFTONEVALUES = {
"flatstripes": "o2x2",
}
+TEST_FORM = {
+ "width" : "200",
+ "color1" : "#ffdead",
+ "color2" : "blue",
+ "stripes" : "true",
+ "stripenumber" : "20",
+ "gradienttype" : "radial",
+ "stripeintensity" : "20",
+ "halftone" : "checkeredfade",
+ "percentbeveled" : "30",
+ "flip" : "true",
+ "bevel" : "flatinner",
+ "rotate" : "20",
+ "height" : "200",
+ "filetype" : "jpg",
+ "username" : "whatever"
+}
+
def sanitize (s):
return re.sub(re.compile(r'\W+'), '', s)
@@ -90,10 +99,8 @@ class Gradient:
if key in form:
if key in ['color1', 'color2']:
params[key] = form[key]
- #params[key] = form[key].value
else:
params[key] = sanitize(form[key])
- #params[key] = sanitize(form[key].value)
if key in ['rotate','tilt','blurriness','stripenumber','stripeintensity']:
params[key] = params[key] if is_number(params[key]) else ""
@@ -106,7 +113,11 @@ class Gradient:
params["color1"] = params["color1"] or DEFAULT_COLORS["color1"];
params["color2"] = params["color2"] or DEFAULT_COLORS["color2"];
self.params = params
-
+ if not self.params['percentbeveled']: self.params['percentbeveled'] = DEFAULT_BEVEL_PERCENT
+ self._bevelvalues = [
+ "flatout", "flatinner", "evenlyframed", "biginner",
+ "bigouter", "dramaticflatout", "dramaticflatinner",
+ ]
def newfilename(self):
return "{}{}-{}_{}_{}.{}".format(
self.tag,
@@ -133,6 +144,7 @@ class Gradient:
'-size',
"{}x{}".format(self.params["width"],self.params["height"])
])
+
if self.params['rotate']: cmd.extend(["-rotate", self.params["rotate"]])
if self.params['tilt']: cmd.extend(["-distort","SRT",self.params['tilt']])
if self.params['flip'] == "true": cmd.append("-flip")
@@ -192,23 +204,25 @@ class Gradient:
cmd.append(os.path.join(self.directory,self.filename));
self._call_cmd(cmd)
- def _make_bevel(self):
- def get_bevelvalue(key, bevpercentval):
- bevel_args = BEVELVALUES[key]
- bevel_args.insert(1, bevpercentval)
- return bevel_args
- if self.params['percentbeveled']:
- w, h = map(int, (self.params['width'], self.params['height']))
- if h >= w:
- bevpercentval = str(int(self.params['percentbeveled'])*0.005*int(h))
- else:
- bevpercentval = str(int(self.params['percentbeveled'])*0.005*int(w))
+ def _get_bevelvalue(self):
+ w, h = map(int, (self.params['width'], self.params['height']))
+ if h >= w:
+ bevpercentval = str(int(self.params['percentbeveled'])*0.005*int(h))
else:
- bevpercentval = BEVEL_DEFAULT
-
- bevel = get_bevelvalue(self.params['bevel'], bevpercentval)
+ bevpercentval = str(int(self.params['percentbeveled'])*0.005*int(w))
+ return {
+ "flatout": ["-s",bevpercentval,"-m","outer"],
+ "flatinner": ["-s",bevpercentval,"-m","inner"],
+ "evenlyframed": ["-s ",bevpercentval,"-m", "split"],
+ "biginner": ["-s",bevpercentval,"-m","outer","-c","50","-b","red","-a","25"],
+ "bigouter": ["-s",bevpercentval,"-m","split","-c","50","-b","red","-a","25"],
+ "dramaticflatout": ["-s",bevpercentval,"-m","outer","-a","25","-b","blue"],
+ "dramaticflatinner": ["-s",bevpercentval,"-m","outer","-a","25","-b","blue"],
+ }[self.params['bevel']]
+
+ def _make_bevel(self):
cmd = [BEVELBORDER]
- cmd += bevel
+ cmd += self._get_bevelvalue()
cmd += [ os.path.join(self.directory,self.filename), os.path.join(self.directory, self.filename) ]
self._call_cmd(cmd)
@@ -216,26 +230,9 @@ class Gradient:
self.filename = self.newfilename()
self.filepath = os.path.join(self.directory, self.filename)
self._build_cmd()
- if self.params['bevel'] in BEVELVALUES:
+ if self.params['bevel'] in self._bevelvalues:
self._make_bevel()
-TEST_FORM = {
- "width" : "200",
- "color1" : "#ffdead",
- "color2" : "blue",
- "stripes" : "true",
- "stripenumber" : "20",
- "gradienttype" : "radial",
- "stripeintensity" : "20",
- "halftone" : "checkeredfade",
- "percentbeveled" : "30",
- "flip" : "true",
- "bevel" : "flatout",
- "rotate" : "20",
- "height" : "200",
- "filetype" : "jpg",
- "username" : "whatever"
-}
if __name__ == "__main__":
g = Gradient(TEST_FORM);
g.create();
diff --git a/pbserver.py b/pbserver.py
index 6712b76..9f2a209 100755
--- a/pbserver.py
+++ b/pbserver.py
@@ -4,6 +4,8 @@ from bottle import route, run, post, request
from gradient import Gradient
from imgrid import Imgrid
from breaker import Breaker
+from pattern import Pattern
+
from s3config import AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, BUCKET_NAME
import os
@@ -115,8 +117,12 @@ def gradient():
im.create();
return return_image(im)
except Exception as e:
- sys.stderr.write(str(e))
+ sys.stderr.write("imgradient failure\n")
+ sys.stderr.write("params:\n")
+ for i in request.forms:
+ sys.stderr.write("{}:{}\n".format(i, request.forms[i]))
raise;
+ return json.dumps({ 'error' : 'Request could not be processed' })
@post('/im/api/imgrid')
def imgrid():
@@ -143,4 +149,19 @@ def breaker():
sys.stderr.write(str(e))
return json.dumps({ 'error' : 'Request could not be processed' })
+@post('/im/api/impattern')
+def pattern():
+ try:
+ im = Pattern(request.forms)
+ im.create();
+ return return_image(im, im.params['url'])
+ except Exception as e:
+ sys.stderr.write(str(e))
+ sys.stderr.write("imgradient failure\n")
+ sys.stderr.write("params:\n")
+ for i in request.forms:
+ sys.stderr.write("{}:{}\n".format(i, request.forms[i]))
+ raise;
+ return json.dumps({ 'error' : 'Request could not be processed' })
+
run(host='0.0.0.0', server='flup', port=8999, debug=True)