summaryrefslogtreecommitdiff
path: root/pb/gradient.py
diff options
context:
space:
mode:
Diffstat (limited to 'pb/gradient.py')
-rwxr-xr-xpb/gradient.py216
1 files changed, 0 insertions, 216 deletions
diff --git a/pb/gradient.py b/pb/gradient.py
deleted file mode 100755
index 724b37c..0000000
--- a/pb/gradient.py
+++ /dev/null
@@ -1,216 +0,0 @@
-#!/usr/bin/python2.7
-import re
-import time
-from subprocess import call
-import simplejson as json
-import sys
-import os
-import sha
-import pb.lib.utils as utils
-from pb.config import *
-
-
-PARAM_LIST = [
- "width", "height",
- "color1", "color2",
- "stripes",
- "stripenumber", "stripeintensity",
- "blurriness",
- "contrast",
- "brightness", "saturation", "hue",
- "halftone",
- "bevel", "percentbeveled",
- "rotate", "flip", "flop", "tilt",
- "filetype",
- "gradienttype",
- "username",
-]
-DEFAULT_FORMAT = "png"
-DEFAULT_COLORS = {
- "color1" : "white",
- "color2" : "black",
-};
-
-DEFAULT_WIDTH = "200"
-DEFAULT_HEIGHT = "200"
-DEFAULT_BEVEL_PERCENT = "12";
-
-HALFTONEVALUES = {
- "checkeredfade": "h6x6a",
- "etchedtransition": "o8x8",
- "bendaydots": "h16x16o",
- "smallerdots1": "h8x8o",
- "smallerdots2": "c7x7w",
- "flatstripes": "o2x2",
- }
-
-
-class Gradient:
- def __init__(self, **kwargs):
- self.tag = "imGradient"
- self.directory = WORKING_DIR
- self.commands = []
- self.filename = ""
- self.filepath = ""
- self.now = utils.now()
-
- params = {}
- for key in PARAM_LIST:
- if key in kwargs:
- if key in ['color1', 'color2']:
- params[key] = utils.is_color(kwargs[key])
- else:
- params[key] = utils.sanitize(kwargs[key])
-
- if key in ['rotate','tilt','blurriness','stripenumber','stripeintensity']:
- params[key] = params[key] if utils.is_number(params[key]) else ""
- elif key in ['brightness', 'contrast', 'hue']:
- if not utils.is_number(params[key]) or params[key] == "100": params[key] = ""
- else:
- params[key] = ""
- params['width'] = params['width'] if utils.is_number(params['width']) else DEFAULT_WIDTH
- params['height'] = params['height'] if utils.is_number(params['height']) else DEFAULT_HEIGHT
- 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,
- self.params['color1'].replace('#','').replace('(','-').replace(')','-'),
- self.params['color2'].replace('#','').replace('(','-').replace(')','-'),
- self.now,
- self.params['username'],
- self.params['filetype'] or DEFAULT_FORMAT,
- )
-
- def _call_cmd(self, cmd):
- try:
- utils.call_cmd(cmd)
- self.commands.append(" ".join(cmd));
- except Exception:
- raise Exception("Unable to call cmd {}".format(str(cmd)))
-
-
- def _build_cmd(self):
- cmd = [BIN_CONVERT]
- cmd.extend([
- '-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")
- if self.params['flop'] == "true": cmd.append("-flop")
- if self.params['contrast']: cmd.extend(["-contrast-stretch", self.params['contrast']])
- gradients = {
- "canvas" : ["canvas:{}".format(self.params['color1'])],
- "radial" : [
- "radial-gradient:{}-{}".format( self.params['color1'], self.params['color2'])
- ],
- "colorspace" : [
- "-colorspace",
- "Gray",
- "plasma:{}-{}".format(self.params['color1'], self.params['color2'])
- ],
- "mirrored" : [
- "plasma:{}-{}".format(self.params['color1'], self.params['color2']),
- "\(","+clone","-flop","\)",
- "append"
- ],
- "plasmawash" : [
- "plasma:{}-{}".format(self.params['color1'], self.params['color2']),
- "-set","colorspace","HSB"
- ],
- "gradientwash" : [
- "gradient:{}-{}".format(self.params['color1'], self.params['color2']),
- "-set","colorspace","HSB"
- ],
- "noise" : ["xc:","+noise","Random","-virtual-pixel","tile"]
- }
- if self.params["gradienttype"] in gradients:
- cmd.extend(gradients[self.params['gradienttype']])
- else:
- cmd.append("gradient:{}-{}".format(self.params['color1'], self.params['color2']))
-
- if self.params['blurriness']:
- cmd.extend(["-blur","0x{}".format(self.params["blurriness"]),"-auto-level"])
-
- if self.params['stripes'] == "true" and len(self.params['stripenumber']):
- cmd.extend(["-function","Sinusoid"])
- if self.params['stripeintensity']:
- cmd.append("{},{}".format(self.params['stripenumber'],self.params["stripeintensity"]))
- else:
- cmd.append(self.params['stripenumber'])
- if self.params["halftone"] in HALFTONEVALUES:
- cmd.extend([
- "-ordered-dither",
- HALFTONEVALUES[self.params["halftone"]]
- ])
- cmd += [
- '-modulate',
- "{},{},{}".format(
- self.params['brightness'] or "100",
- self.params['saturation'] or "100",
- self.params['hue'] or "100")
- ]
- cmd.append(os.path.join(self.directory,self.filename));
- self._call_cmd(cmd)
-
- 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 = 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 += self._get_bevelvalue()
- cmd += [ os.path.join(self.directory,self.filename), os.path.join(self.directory, self.filename) ]
- self._call_cmd(cmd)
-
- def create(self):
- self.filename = self.newfilename()
- self.filepath = os.path.join(self.directory, self.filename)
- self._build_cmd()
- if self.params['bevel'] in self._bevelvalues:
- self._make_bevel()
-
-if __name__ == "__main__":
- 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"
- }
- g = Gradient(**TEST_FORM);
- g.create();
- print " ".join(g.commands)
- print g.filename