Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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