diff options
| author | yo mama <pepper@scannerjammer.com> | 2015-05-01 14:32:07 -0700 |
|---|---|---|
| committer | yo mama <pepper@scannerjammer.com> | 2015-05-01 14:32:07 -0700 |
| commit | e6e2eaeaa12cbc1db19aa76e3f610d0713a7d75a (patch) | |
| tree | 38c6dadff1c2a6e99ccfb791077b2943e73e95d6 /generate.py | |
| parent | ed134d6412c3ee32357f0582ee095f61210d637b (diff) | |
looking good
Diffstat (limited to 'generate.py')
| -rwxr-xr-x | generate.py | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/generate.py b/generate.py deleted file mode 100755 index 1bc1655..0000000 --- a/generate.py +++ /dev/null @@ -1,230 +0,0 @@ -#!/usr/bin/python2.7 -import sys -import os - -from pb.config import * -import pb.lib.utils as utils - -#FIXME these guys can do stuff wider than 1000 -LIKE_A_BOSS = "ryz pepper seamonkey JAMES".split(" ") -DEFAULT_FINALFORMAT = "gif" -DB_TAG = "pb"; - -GRAVITY_PARAMS = ["NorthWest","North","NorthEast","West","Center","East","SouthWest","South","SouthEast"] -GRAVITY_DEFAULT = "center" -FORMAT_PARAMS = ["jpg", "gif", "png"] -COMPOSE_PARAMS = [ "Over", "ATop", "Dst_Over", "Dst_In", "Dst_Out", "Multiply", - "Screen", "Divide", "Plus", "Difference", "Exclusion", - "Lighten", "Darken", "Overlay", "Hard_Light", "Soft_Light", - "Linear_Dodge", "Linear_Burn", "Color_Dodge", "Color_Burn" ] -DISPOSE_PARAMS = ["None","Previous","Background"] -DISPOSE_DEFAULT = "None" - -class Generate(): - def __init__(self, **kwargs): - self.params = {} - self.now = utils.now() - self.files_created = [] - self.commands = []; - self._required_keys = [ -#{{{ required_keys - #IMAGES - "url", - "background", - - #BOOLS - "coalesce", - "dispose", - "nearest", - "merge_early", - "flip", - "flop", - "tile", - "transparent", - - #COLORS - "black", - "white", - "subtract", - - #INTS - "fuzz", - "width", - "height", - "brightness", - "contrast", - "saturation", - "rotate", - "hue", - - #ENUMS - "compose", - "gravity", - "format", - - #STRINGS - "name", - "callback", -#}}} - ] - for k in self._required_keys: - if k in kwargs: - if k in [ 'url', 'background' ] and utils.bool_correct(kwargs[k]): - self.params[k] = { - 'url' : kwargs[k], - 'filename' : self._make_tempname(k), - 'path' : os.path.join(WORKING_DIR, self._make_tempname(k)) , - } - try: - utils.download(self.params[k]['url'], self.params[k]['path']) - self.files_created.append(self.params[k]['path']) - self.params[k]['mimetype'] = utils.get_mimetype(self.params[k]['path']) - except Exception as e: - sys.stderr.write(str(e)) - raise Exception ("BAD PARAMS"); - elif k in [ 'black', 'white', 'subtract' ]: - try: - self.params[k] = utils.is_color(kwargs[k]) - except Exception: - raise Exception("Unable to process color for:\n{}".format(k)) - elif k in [ - "coalesce", "dispose", "nearest", "merge_early", - "flip", "flop", "tile", "transparent", - ]: - self.params[k] = utils.bool_correct(utils.sanitize(kwargs[k])) - elif k == 'gravity' and self._test_enum(kwargs[k], GRAVITY_PARAMS): - self.params[k] = kwargs[k] - elif k == 'format' and self._test_enum(kwargs[k], FORMAT_PARAMS): - self.params[k] = kwargs[k] - elif k == 'compose' and self._test_enum(kwargs[k], COMPOSE_PARAMS): - self.params[k] = kwargs[k] - elif k == 'dispose' and self._test_enum(kwargs[k], DISPOSE_PARAMS): - self.params[k] = kwargs[k] - elif k in [ "fuzz", "width", "height", "brightness", "contrast", "saturation", "rotate", "hue" ]: - self.params[k] = int(kwargs[k]) - else: - self.params[k] = utils.sanitize(kwargs[k]) - else: - self.params[k] = None; - - self.basename = self._get_filename(); - - self.filename = "{}.{}".format(self.basename, self.params.get('format', DEFAULT_FINALFORMAT)) - self.filepath = os.path.join(WORKING_DIR, self.filename) - - if self.params['bgfile']: - self.tag = self.params['compose'] - else: - self.tag = self.params['transparent'] or "im" - - def _make_tempname(self, s): - return "PBTMP{}{}".format(self.now, s); - - def _test_enum(self, e, arr): - if e in arr: return True - raise Exception ("Bad value: {}".format(e)) - - def _get_filename(self): - return "{}_{}_{}".format( - self.tag, - self.now, - self.params.get('username',"") - ); - - 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 _cleanup(self): - if not len(self.files_created): - pass - cmd = ["rm", "-f"] + self.files_created - self._call_cmd(cmd) - - def _composite (self): - cmd = [ - BIN_CONVERT, self.params['bgfile'], - "null:", self.filepath, "-matte", - "-dispose", self.params.get('dispose', DISPOSE_DEFAULT), - "-gravity", self.params.get("gravity",GRAVITY_DEFAULT), - "-compose", self.params['compose'], "-layers", "composite", - self.filename ] - self._call_cmd(cmd); - - def bin_convert (self, params, oldfile, newfile): - cmd = [BIN_CONVERT, oldfile] - cmd.extend(params) - cmd.append(newfile) - self._call_cmd(cmd); - - def _convert(self): - cmd = [] - if self.params['rotate']: cmd += ["-rotate", self.params['rotate'] ] - if self.params['flip']: cmd += ["-flip"] - if self.params['flop']: cmd += ["-flop"] - if self.params['transparent']: - if self.params['fuzz']: - cmd += ["-fuzz", "{}%".format(self.params['fuzz']) ] - cmd += [ "-transparent", self.params.get('subtract', "white") ] - if self.params['width'] or self.params['height']: - if self.params['nearest']: - if self.params['format'] == "gif": - cmd += [ "-coalesce","+map","-interpolate","Nearest","-interpolative-resize" ] - else: - cmd.append("-resize") - cmd.append("{}x{}".format(self.params.get('width',''), self.params.get('height',''))) - if self.params['black'] != "black" or self.params['white'] != 'white': - cmd += [ "+level-colors" , "{},{}".format(self.params['black'], self.params['black']) ] - if self.params['contrast']: cmd += [ '-contrast-stretch', self.params['contrast'] ] - if any( e in self.params.keys for e in ['brightness', 'saturation', 'hue' ]): - cmd += [ - "{},{},{}".format( - self.params.get('brightness', 100), - self.params.get('contrast', 100), - self.params.get('hue', 100) - ), - "-modulate" ] - cmd.append("-coalesce"); #why? #FIXME - self._call_cmd(cmd); - - def create(self): - if self._convert(); - if self.params['bgfile']: - self._composite() - -##remove(newfile) -if __name__ == "__main__": - - TEST_PARAMS = { - 'nearest': 'true', -# 'height': None, - 'compose': 'Soft_Light', - 'coalesce': 'true', - 'dispose': 'true', - 'gravity': 'Center', - 'width': '200', - 'black': 'black', - 'tile': 'true', - 'white': 'white', - 'contrast': '100', - 'hue': '90', - 'saturation': '100', - 'merge_early': 'true', - 'format': 'gif', - 'background': 'http://i.asdf.us/im/bc/new_1430440747.gif', - 'subtract': '#EE7AE9', - 'transparent': 'true', -# 'rotate': None, - 'name': 'yo', -# 'brightness': None, - 'url': 'http://asdf.us/im/new.gif', - 'flop': 'true', - 'flip': 'false', - 'callback': 'jsonp1430442384162', - 'fuzz': '5' - } - g = Generate(**TEST_PARAMS); - |
