def get_app(self): cfg = Config(SECURITY_KEY='ACME-SEC') server_params = ServerParameters(None, None, None, None, None, None) server_params.gifsicle_path = which('gifsicle') cfg.DETECTORS = [ 'thumbor.detectors.face_detector', 'thumbor.detectors.profile_detector', 'thumbor.detectors.glasses_detector', 'thumbor.detectors.feature_detector', ] cfg.STORAGE = 'thumbor.storages.no_storage' cfg.LOADER = 'thumbor.loaders.file_loader' cfg.FILE_LOADER_ROOT_PATH = os.path.join(os.path.dirname(__file__), 'imgs') cfg.ENGINE = getattr(self, 'engine', None) cfg.USE_GIFSICLE_ENGINE = True if not cfg.ENGINE: return None importer = Importer(cfg) importer.import_modules() ctx = Context(server_params, cfg, importer) application = ThumborServiceApp(ctx) return application
def topic(self): conf = Config() conf.ENGINE = 'thumbor.engines.pil' imp = Importer(conf) imp.import_modules() imp.filters = [Filter] return Context(None, conf, imp)
def get_app(self): cfg = Config(SECURITY_KEY='ACME-SEC') server_params = ServerParameters(None, None, None, None, None, None) server_params.gifsicle_path = which('gifsicle') cfg.DETECTORS = [ 'thumbor.detectors.face_detector', 'thumbor.detectors.profile_detector', 'thumbor.detectors.glasses_detector', 'thumbor.detectors.feature_detector', ] cfg.STORAGE = 'thumbor.storages.no_storage' cfg.LOADER = 'thumbor.loaders.file_loader' cfg.FILE_LOADER_ROOT_PATH = os.path.join(os.path.dirname(__file__), 'imgs') cfg.ENGINE = getattr(self, 'engine', None) cfg.USE_GIFSICLE_ENGINE = True cfg.FFMPEG_PATH = which('ffmpeg') cfg.ENGINE_THREADPOOL_SIZE = 10 cfg.OPTIMIZERS = [ 'thumbor.optimizers.gifv', ] if not cfg.ENGINE: return None importer = Importer(cfg) importer.import_modules() ctx = Context(server_params, cfg, importer) application = ThumborServiceApp(ctx) return application
def get_app(self): cfg = Config(SECURITY_KEY="ACME-SEC") server_params = ServerParameters(None, None, None, None, None, None) server_params.gifsicle_path = which("gifsicle") cfg.DETECTORS = [ "thumbor.detectors.face_detector", "thumbor.detectors.profile_detector", "thumbor.detectors.glasses_detector", "thumbor.detectors.feature_detector", ] cfg.STORAGE = "thumbor.storages.no_storage" cfg.LOADER = "thumbor.loaders.file_loader" cfg.FILE_LOADER_ROOT_PATH = os.path.join(os.path.dirname(__file__), "imgs") cfg.ENGINE = getattr(self, "engine", None) cfg.USE_GIFSICLE_ENGINE = True cfg.FFMPEG_PATH = which("ffmpeg") cfg.ENGINE_THREADPOOL_SIZE = 10 cfg.OPTIMIZERS = [ "thumbor.optimizers.gifv", ] if not cfg.ENGINE: return None importer = Importer(cfg) importer.import_modules() ctx = Context(server_params, cfg, importer) application = ThumborServiceApp(ctx) return application
def get_context(): conf = Config() conf.ENGINE = "thumbor.engines.pil" imp = Importer(conf) imp.import_modules() imp.filters = [Filter] return Context(None, conf, imp)
def get_app(self): cfg = Config(SECURITY_KEY='ACME-SEC') server_params = ServerParameters(None, None, None, None, None, None) server_params.gifsicle_path = which('gifsicle') cfg.DETECTORS = [ 'thumbor.detectors.face_detector', 'thumbor.detectors.profile_detector', 'thumbor.detectors.glasses_detector', 'thumbor.detectors.feature_detector', ] cfg.STORAGE = 'thumbor.storages.no_storage' cfg.LOADER = 'thumbor.loaders.file_loader' cfg.FILE_LOADER_ROOT_PATH = os.path.join(os.path.dirname(__file__), 'imgs') cfg.ENGINE = getattr(self, 'engine', None) cfg.MP4_ENGINE = 'thumbor.engines.mp4' cfg.USE_GIFSICLE_ENGINE = True cfg.FFMPEG_PATH = which('ffmpeg') cfg.FFPROBE_PATH = which('ffprobe') cfg.CONVERT_PATH = which('convert') cfg.ENGINE_THREADPOOL_SIZE = 10 cfg.OPTIMIZERS = [ 'thumbor.optimizers.gifv', ] if not cfg.ENGINE: return None importer = Importer(cfg) importer.import_modules() ctx = Context(server_params, cfg, importer) application = ThumborServiceApp(ctx) return application
def topic(self): conf = Config() conf.ENGINE = 'thumbor.engines.pil' imp = Importer(conf) imp.import_modules() imp.filters = [Filter] ctx = Context(None, conf, imp) for item in DATA: ctx.modules.engine.image = ctx.modules.engine.gen_image(item[1],'#fff') req = RequestParameters(fit_in=True,width=item[0][0],height=item[0][1]) ctx.request = req filter_instances = ctx.filters_factory.create_instances(ctx, "fill(blue)") filter_instances[0].run() yield (filter_instances[0].engine.image.size,item[2])
def get_app(self): cfg = Config(SECURITY_KEY='ACME-SEC') server_params = ServerParameters(None, None, None, None, None, None) cfg.DETECTORS = [ 'thumbor.detectors.face_detector', 'thumbor.detectors.profile_detector', 'thumbor.detectors.glasses_detector', 'thumbor.detectors.feature_detector', ] cfg.STORAGE = 'thumbor.storages.no_storage' cfg.LOADER = 'thumbor.loaders.file_loader' cfg.FILE_LOADER_ROOT_PATH = os.path.join(os.path.dirname(__file__), 'imgs') cfg.ENGINE = getattr(self, 'engine', None) if not cfg.ENGINE: return None importer = Importer(cfg) importer.import_modules() ctx = Context(server_params, cfg, importer) application = ThumborServiceApp(ctx) return application
def get_config(self): cfg = Config(SECURITY_KEY='ACME-SEC') cfg.STORAGE = 'thumbor.storages.no_storage' cfg.LOADER = 'wikimedia_thumbor.loader.file' cfg.LOADER_EXCERPT_LENGTH = 4096 cfg.HTTP_LOADER_REQUEST_TIMEOUT = 60 cfg.HTTP_LOADER_TEMP_FILE_TIMEOUT = 20 cfg.FILE_LOADER_ROOT_PATH = os.path.join( os.path.dirname(__file__), 'originals' ) cfg.ENGINE = 'wikimedia_thumbor.engine.proxy' cfg.RESPECT_ORIENTATION = True cfg.FFMPEG_PATH = which('ffmpeg') cfg.EXIFTOOL_PATH = which('exiftool') cfg.VIPS_PATH = which('vips') cfg.FFPROBE_PATH = which('ffprobe') cfg.XCF2PNG_PATH = which('xcf2png') cfg.GHOSTSCRIPT_PATH = which('gs') cfg.DDJVU_PATH = which('ddjvu') cfg.RSVG_CONVERT_PATH = which('rsvg-convert') cfg.THREED2PNG_PATH = which('3d2png') cfg.XVFB_RUN_PATH = which('xvfb-run') cfg.CONVERT_PATH = which('convert') cfg.CWEBP_PATH = which('cwebp') timeout = which( 'gtimeout' if platform.system() == 'Darwin' else 'timeout' ) cfg.SUBPROCESS_TIMEOUT_PATH = timeout cfg.SUBPROCESS_USE_TIMEOUT = True cfg.SUBPROCESS_TIMEOUT = 60 cfg.CHROMA_SUBSAMPLING = '4:2:0' cfg.QUALITY = 79 cfg.QUALITY_LOW = 40 cfg.DEFAULT_FILTERS_JPEG = 'conditional_sharpen(0.0,0.8,1.0,0.0,0.85)' cfg.MAX_ANIMATED_GIF_AREA = 500 * 200 * 60 cfg.COMMUNITY_EXTENSIONS = [ 'wikimedia_thumbor.handler.images', 'wikimedia_thumbor.handler.core' ] cfg.EXIF_FIELDS_TO_KEEP = ['Artist', 'Copyright', 'ImageDescription'] cfg.EXIF_TINYRGB_PATH = os.path.join( os.path.dirname(__file__), 'tinyrgb.icc' ) cfg.EXIF_TINYRGB_ICC_REPLACE = 'sRGB IEC61966-2.1' cfg.VIPS_ENGINE_MIN_PIXELS = 20000000 cfg.PROXY_ENGINE_ENGINES = [ ('wikimedia_thumbor.engine.xcf', ['xcf']), ('wikimedia_thumbor.engine.djvu', ['djvu']), ('wikimedia_thumbor.engine.vips', ['tiff', 'png']), ('wikimedia_thumbor.engine.tiff', ['tiff']), ('wikimedia_thumbor.engine.ghostscript', ['pdf']), ('wikimedia_thumbor.engine.gif', ['gif']), ('wikimedia_thumbor.engine.stl', ['stl']), # SVG should alwayd be the one before last, because of how broad it is (trying all XML documents) ('wikimedia_thumbor.engine.svg', ['svg']), # Imagemagick should always be last, to act as a catch-all since Thumbor defaults to assuming JPG when the document is unknown ('wikimedia_thumbor.engine.imagemagick', ['jpg', 'png', 'webp']), ] cfg.FILTERS = [ 'wikimedia_thumbor.filter.conditional_sharpen', 'wikimedia_thumbor.filter.format', 'wikimedia_thumbor.filter.lang', 'wikimedia_thumbor.filter.page', 'wikimedia_thumbor.filter.crop', 'wikimedia_thumbor.filter.flip', 'thumbor.filters.quality', 'thumbor.filters.rotate' ] return cfg
def get_config(self): cfg = Config(SECURITY_KEY='ACME-SEC') cfg.STORAGE = 'thumbor.storages.no_storage' cfg.LOADER = 'wikimedia_thumbor.loader.file' cfg.LOADER_EXCERPT_LENGTH = 4096 cfg.HTTP_LOADER_REQUEST_TIMEOUT = 60 cfg.HTTP_LOADER_TEMP_FILE_TIMEOUT = 20 cfg.FILE_LOADER_ROOT_PATH = os.path.join( os.path.dirname(__file__), 'originals' ) cfg.ENGINE = 'wikimedia_thumbor.engine.proxy' cfg.RESPECT_ORIENTATION = True cfg.FFMPEG_PATH = which('ffmpeg') cfg.EXIFTOOL_PATH = which('exiftool') cfg.VIPS_PATH = which('vips') cfg.FFPROBE_PATH = which('ffprobe') cfg.XCF2PNG_PATH = which('xcf2png') cfg.GHOSTSCRIPT_PATH = which('gs') cfg.DDJVU_PATH = which('ddjvu') cfg.RSVG_CONVERT_PATH = which('rsvg-convert') cfg.THREED2PNG_PATH = which('3d2png.js') cfg.XVFB_RUN_PATH = which('xvfb-run') cfg.CONVERT_PATH = which('convert') cfg.CWEBP_PATH = which('cwebp') timeout = which( 'gtimeout' if platform.system() == 'Darwin' else 'timeout' ) cfg.SUBPROCESS_TIMEOUT_PATH = timeout cfg.SUBPROCESS_USE_TIMEOUT = True cfg.SUBPROCESS_TIMEOUT = 60 cfg.CHROMA_SUBSAMPLING = '4:2:0' cfg.QUALITY = 79 cfg.QUALITY_LOW = 40 cfg.DEFAULT_FILTERS_JPEG = 'conditional_sharpen(0.0,0.8,1.0,0.0,0.85)' cfg.MAX_ANIMATED_GIF_AREA = 500 * 200 * 60 cfg.COMMUNITY_EXTENSIONS = [ 'wikimedia_thumbor.handler.multi', 'wikimedia_thumbor.handler.images', 'wikimedia_thumbor.handler.core' ] cfg.EXIF_FIELDS_TO_KEEP = ['Artist', 'Copyright', 'ImageDescription'] cfg.EXIF_TINYRGB_PATH = os.path.join( os.path.dirname(__file__), 'tinyrgb.icc' ) cfg.EXIF_TINYRGB_ICC_REPLACE = 'sRGB IEC61966-2.1' cfg.VIPS_ENGINE_MIN_PIXELS = 20000000 cfg.PROXY_ENGINE_ENGINES = [ ('wikimedia_thumbor.engine.xcf', ['xcf']), ('wikimedia_thumbor.engine.djvu', ['djvu']), ('wikimedia_thumbor.engine.vips', ['tiff', 'png']), ('wikimedia_thumbor.engine.tiff', ['tiff']), ('wikimedia_thumbor.engine.ghostscript', ['pdf']), ('wikimedia_thumbor.engine.gif', ['gif']), ('wikimedia_thumbor.engine.stl', ['stl']), # SVG should alwayd be the one before last, because of how broad it is (trying all XML documents) ('wikimedia_thumbor.engine.svg', ['svg']), # Imagemagick should always be last, to act as a catch-all since Thumbor defaults to assuming JPG when the document is unknown ('wikimedia_thumbor.engine.imagemagick', ['jpg', 'png', 'webp']), ] cfg.FILTERS = [ 'wikimedia_thumbor.filter.conditional_sharpen', 'wikimedia_thumbor.filter.format', 'wikimedia_thumbor.filter.lang', 'wikimedia_thumbor.filter.page', 'wikimedia_thumbor.filter.crop', 'wikimedia_thumbor.filter.flip', 'thumbor.filters.quality', 'thumbor.filters.rotate' ] return cfg