def test_get_filename(self): self.assertEqual(filename.get_filename('name', (100, 200), 'JPEG'), 'name/100x200.jpg') self.assertEqual(filename.get_filename('name', (100, None), 'PNG'), 'name/100x.png') self.assertEqual(filename.get_filename('name', (None, 200), 'WEBP'), 'name/x200.webp')
def _real_path(self, image_id, image_size, image_format): fileid = self.hash(image_id) index = [fileid[pos:pos + 1] for pos in range(0, 4, 1)] if (not image_size and image_format) or (image_size and not image_format): raise ValueError('Size and format need to both be None or both have values.') if not (image_size and image_format): return os.path.join(self.root, os.path.join(*index), image_id) filename = get_filename(image_id, image_size, image_format) return os.path.join(self.root, os.path.join(*index), filename)
def handle_image(self, req): request_format = req.get_image_format() request_id = req.get_image_id() request_size = req.get_image_size() request_filename = get_filename(request_id, request_size, request_format) if not self.filehandler.exists(request_id): raise FileNotFoundError('File "%s" does not exist on filesystem' % request_filename) elif self.filehandler.exists(request_id, request_size, request_format): image_data = self.filehandler.read(request_id, request_size, request_format) else: image_data = self.filehandler.read_best(request_id, request_size) image = Canvas.from_bytes(image_data) image.smart_resize(request_size) image_data = image.to_bytes(format=request_format) return SuccessResponse(image_data, request_format)