return "-".join(s.split())
-def generate_thumbnail(image, size, square=False, format=None, **args):
+def generate_thumbnail(image, size, square=False, format=None, quality=None, **args):
assert image, "No image data received"
if not isinstance(image, PIL.Image.Image):
# Arguments to optimise the compression
args.update({
"subsampling" : "4:2:0",
- "quality" : 72,
+ "quality" : quality or 72,
})
if image.format == "JPEG":
args.update({
- "qtables" : "web_low",
+ "qtables" : "web_low",
})
elif image.format == "WEBP":
args.update({
- "lossless" : False,
+ "lossless" : False,
})
with io.BytesIO() as f:
return thumbnail
# Generate the thumbnail
- thumbnail = util.generate_thumbnail(self.blob, size, format=format)
+ thumbnail = util.generate_thumbnail(self.blob, size, format=format, quality=95)
# Put it into the cache for forever
await self.backend.cache.set(cache_key, thumbnail)