def topic(self): engine = MockEngine(size=IMAGE_SIZE) json = JSONEngine(engine=engine, path=IMAGE_PATH) json.crop(100, 100, 200, 150) return loads(json.read('jpg', 100))
def topic(self): engine = MockEngine(size=IMAGE_SIZE) json = JSONEngine(engine=engine, path=IMAGE_PATH, callback_name="callback") jsonp = json.read('jpg', 100) match = re.match('^callback\((.+)\);', jsonp) return match
def topic(self): engine = MockEngine(size=IMAGE_SIZE) json = JSONEngine(engine=engine, path=IMAGE_PATH) json.focus([FocalPoint(100, 100), FocalPoint(200, 200)]) return loads(json.read('jpg', 100))
def topic(self): engine = MockEngine(size=IMAGE_SIZE) json = JSONEngine(engine=engine, path=IMAGE_PATH) json.focus([ FocalPoint(100, 100), FocalPoint(200, 200) ]) return loads(json.read('jpg', 100))
def transform(): self.normalize_crops(normalized, req, engine) if req.meta: self.context.request.engine = JSONEngine(engine, req.image_url, req.meta_callback) after_transform_cb = functools.partial(self.after_transform, self.context) Transformer(self.context).transform(after_transform_cb)
def transform(): self.normalize_crops(normalized, req, engine) if req.meta: self.context.transformer.engine = \ self.context.request.engine = \ JSONEngine(engine, req.image_url, req.meta_callback) self.context.transformer.transform(self.after_transform)
def topic(self): engine = MockEngine(size=IMAGE_SIZE) json = JSONEngine(engine=engine, path=IMAGE_PATH) json.flip_vertically() json.flip_horizontally() return loads(json.read('jpg', 100))
def callback(buffer): if buffer is None: self._error(404) return context = dict(loader=self.loader, engine=self.engine, storage=self.storage, buffer=buffer, should_crop=should_crop, crop_left=crop_left, crop_top=crop_top, crop_right=crop_right, crop_bottom=crop_bottom, fit_in=fit_in, should_flip_horizontal=horizontal_flip, width=width, should_flip_vertical=vertical_flip, height=height, halign=halign, valign=valign, extension=extension, focal_points=[]) self.engine.load(buffer, extension) if meta: context['engine'] = JSONEngine(self.engine, image) if self.detectors and should_be_smart: with tempfile.NamedTemporaryFile(suffix='.jpg') as temp_file: jpg_buffer = buffer if extension in ( '.jpg', '.jpeg') else self.engine.read('.jpg') temp_file.write(jpg_buffer) temp_file.seek(0) context['file'] = temp_file.name self.detectors[0](index=0, detectors=self.detectors).detect(context) Transformer(context).transform() content_type = "application/json" if meta else CONTENT_TYPE[ context['extension']] self.set_header('Content-Type', content_type) results = context['engine'].read(context['extension']) self.write(results) self.finish()
def callback(normalized, buffer=None, engine=None): req = self.context.request if engine is None: if buffer is None: self._error(404) return engine = self.context.modules.engine engine.load(buffer, req.extension) new_crops = None if normalized and req.should_crop: crop_left = req.crop['left'] crop_top = req.crop['top'] crop_right = req.crop['right'] crop_bottom = req.crop['bottom'] actual_width, actual_height = engine.size if not req.width and not req.height: actual_width = engine.size[0] actual_height = engine.size[1] elif req.width: actual_height = engine.get_proportional_height( engine.size[0]) elif req.height: actual_width = engine.get_proportional_width( engine.size[1]) new_crops = self.translate_crop_coordinates( engine.source_width, engine.source_height, actual_width, actual_height, crop_left, crop_top, crop_right, crop_bottom) req.crop['left'] = new_crops[0] req.crop['top'] = new_crops[1] req.crop['right'] = new_crops[2] req.crop['bottom'] = new_crops[3] if req.meta: self.context.modules.engine = JSONEngine( engine, req.image_url, req.meta_callback) after_transform_cb = functools.partial(self.after_transform, self.context) Transformer(self.context).transform(after_transform_cb)
def callback(normalized, buffer=None, engine=None): req = self.context.request if engine is None: if buffer is None: self._error(404) return engine = self.context.modules.engine engine.load(buffer, req.extension) self.normalize_crops(normalized, req, engine) if req.meta: self.context.modules.engine = JSONEngine(engine, req.image_url, req.meta_callback) after_transform_cb = functools.partial(self.after_transform, self.context) Transformer(self.context).transform(after_transform_cb)
async def get_image(self): """ This function is called after the PRE_LOAD filters have been applied. It applies the AFTER_LOAD filters on the result, then crops the image. """ try: result = await self._fetch(self.context.request.image_url) if not result.successful: if result.loader_error == LoaderResult.ERROR_NOT_FOUND: self._error(404) return if result.loader_error == LoaderResult.ERROR_UPSTREAM: # Return a Bad Gateway status if the error # came from upstream self._error(502) return if result.loader_error == LoaderResult.ERROR_TIMEOUT: # Return a Gateway Timeout status if upstream # timed out (i.e. 599) self._error(504) return if isinstance(result.loader_error, int): self._error(result.loader_error) return if (hasattr(result, "engine_error") and result.engine_error == EngineResult.COULD_NOT_LOAD_IMAGE): self._error(400) return self._error(500) return except Exception as error: msg = ( "[BaseHandler] get_image failed for url `{url}`. error: `{error}`" ).format(url=self.context.request.image_url, error=error) self.log_exception(*sys.exc_info()) if "cannot identify image file" in str(error): logger.warning(msg) self._error(400) else: logger.error(msg) self._error(500) return normalized = result.normalized buffer = result.buffer engine = result.engine req = self.context.request if engine is None: if buffer is None: self._error(504) return engine = self.context.request.engine try: engine.load(buffer, self.context.request.extension) except Exception as error: logger.exception("Loading image failed with %s", error) self._error(504) return self.context.transformer = Transformer(self.context) await self.filters_runner.apply_filters( thumbor.filters.PHASE_AFTER_LOAD) self.normalize_crops(normalized, req, engine) if req.meta: self.context.transformer.engine = self.context.request.engine = JSONEngine( engine, req.image_url, req.meta_callback) await self.context.transformer.transform() await self.after_transform()
def topic(self): engine = MockEngine(size=IMAGE_SIZE) json = JSONEngine(engine=engine, path=IMAGE_PATH) return json