Thumbnail webp images as webp to avoid losing transparency

This commit is contained in:
Tulir Asokan 2023-02-12 14:39:07 +02:00
parent ddbd79a981
commit cca37a0ecc
2 changed files with 7 additions and 5 deletions

View File

@ -47,10 +47,8 @@ THUMBNAIL_SIZE_YAML = """\
THUMBNAIL_SUPPORTED_MEDIA_FORMAT_MAP = { THUMBNAIL_SUPPORTED_MEDIA_FORMAT_MAP = {
"image/jpeg": "jpeg", "image/jpeg": "jpeg",
"image/jpg": "jpeg", "image/jpg": "jpeg",
"image/webp": "jpeg", "image/webp": "webp",
# Thumbnails can only be jpeg or png. We choose png thumbnails for gif "image/gif": "webp",
# because it can have transparency.
"image/gif": "png",
"image/png": "png", "image/png": "png",
} }
@ -102,6 +100,10 @@ def parse_thumbnail_requirements(
requirement.append( requirement.append(
ThumbnailRequirement(width, height, method, "image/png") ThumbnailRequirement(width, height, method, "image/png")
) )
elif thumbnail_format == "webp":
requirement.append(
ThumbnailRequirement(width, height, method, "image/webp")
)
else: else:
raise Exception( raise Exception(
"Unknown thumbnail mapping from %s to %s. This is a Synapse problem, please report!" "Unknown thumbnail mapping from %s to %s. This is a Synapse problem, please report!"

View File

@ -38,7 +38,7 @@ class ThumbnailError(Exception):
class Thumbnailer: class Thumbnailer:
FORMATS = {"image/jpeg": "JPEG", "image/png": "PNG"} FORMATS = {"image/jpeg": "JPEG", "image/png": "PNG", "image/webp": "WEBP"}
@staticmethod @staticmethod
def set_limits(max_image_pixels: int) -> None: def set_limits(max_image_pixels: int) -> None: