diff options
| -rwxr-xr-x | gradient.py | 89 | ||||
| -rwxr-xr-x | pbserver.py | 23 |
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) |
