def _assert_expected_chained(self, case): with open(case["source_path"], "rb") as f: img = Image(f) for operation in case["operation"]: if operation == "resize": img.resize(case["width"], case["height"]) elif operation == "rotate": img.rotate(case["degree"]) elif operation == "region": img.region(case["rect"].split(",")) rv = img.save() with open(case["expected_path"], "rb") as expected: msg = "{} does not match {}".format(case["source_path"], case["expected_path"]) self.assertEqual(rv.read(), expected.read(), msg)
def main(): import sys import tornado.httpclient import tornado.options from tornado.options import define, options, parse_command_line define("operation", help="the operation to be performed", type=str, default="resize", metavar="|".join(["resize", "rotate", "none"])) define("width", help="the desired image width", type=int) define("height", help="the desired image height", type=int) define("mode", help="the resizing mode", metavar="|".join(Image.MODES), type=str) define("background", help="the hexidecimal fill background color", type=str) define("position", help="the crop position", metavar="|".join(Image.POSITIONS), type=str) define("filter", help="default filter to use when resizing", metavar="|".join(Image.FILTERS), type=str) define("degree", help="the desired rotation degree", type=int) define("expand", help="expand image size to accomodate rotation", type=int) define("rect", help="rectangle: x,y,w,h", type=str) define("format", help="default format to use when saving", metavar="|".join(Image.FORMATS), type=str) define("quality", help="default jpeg quality, 0-100", type=int) args = parse_command_line() if not args: print("Missing image source url") sys.exit() elif options.operation == "region": if not options.rect: tornado.options.print_help() sys.exit() elif options.operation == "resize": if not options.width and not options.height: tornado.options.print_help() sys.exit() elif options.operation == "rotate": if not options.degree: tornado.options.print_help() sys.exit() elif options.operation != "noop": tornado.options.print_help() sys.exit() if args[0].startswith("http://") or args[0].startswith("https://"): client = tornado.httpclient.HTTPClient() resp = client.fetch(args[0]) image = Image(resp.buffer) else: image = Image(open(args[0], "r")) if options.operation == "resize": image.resize(options.width, options.height, mode=options.mode, filter=options.filter, background=options.background, position=options.position) elif options.operation == "rotate": image.rotate(options.degree, expand=options.expand) elif options.operation == "region": image.region(options.rect.split(",")) stream = image.save(format=options.format, quality=options.quality) sys.stdout.write(stream.read()) stream.close()
def main(): import sys import tornado.httpclient import tornado.options from tornado.options import define, options, parse_command_line define("operation", help="the operation to be performed", type=str, default="resize", metavar="|".join(["resize", "rotate", "none"])) define("width", help="the desired image width", type=int) define("height", help="the desired image height", type=int) define("mode", help="the resizing mode", metavar="|".join(Image.MODES), type=str) define("background", help="the hexidecimal fill background color", type=str) define("position", help="the crop position", metavar="|".join(Image.POSITIONS), type=str) define("filter", help="default filter to use when resizing", metavar="|".join(Image.FILTERS), type=str) define("degree", help="the desired rotation degree", type=int) define("expand", help="expand image size to accomodate rotation", type=int) define("rect", help="rectangle: x,y,w,h", type=str) define("format", help="default format to use when saving", metavar="|".join(Image.FORMATS), type=str) define("optimize", help="default to optimize when saving", type=int) define("quality", help="default jpeg quality, 0-100", type=int) args = parse_command_line() if not args: print("Missing image source url") sys.exit() elif options.operation == "region": if not options.rect: tornado.options.print_help() sys.exit() elif options.operation == "resize": if not options.width and not options.height: tornado.options.print_help() sys.exit() elif options.operation == "rotate": if not options.degree: tornado.options.print_help() sys.exit() elif options.operation != "noop": tornado.options.print_help() sys.exit() if args[0].startswith("http://") or args[0].startswith("https://"): client = tornado.httpclient.HTTPClient() resp = client.fetch(args[0]) image = Image(resp.buffer) else: image = Image(open(args[0], "r")) if options.operation == "resize": image.resize(options.width, options.height, mode=options.mode, filter=options.filter, background=options.background, position=options.position) elif options.operation == "rotate": image.rotate(options.degree, expand=options.expand) elif options.operation == "region": image.region(options.rect.split(",")) stream = image.save(format=options.format, optimize=options.optimize, quality=options.quality) sys.stdout.write(stream.read()) stream.close()