return "-".join(s.split())
-def generate_thumbnail(data, size, square=False, **args):
- assert data, "No image data received"
+def generate_thumbnail(image, size, square=False, format=None, **args):
+ assert image, "No image data received"
- try:
- image = PIL.Image.open(io.BytesIO(data))
+ if not isinstance(image, PIL.Image.Image):
+ image = io.BytesIO(image)
+
+ try:
+ image = PIL.Image.open(image)
- # If we cannot open the image, we return it in raw form
- except PIL.UnidentifiedImageError as e:
- return data
+ # If we cannot open the image, we return it in raw form
+ except PIL.UnidentifiedImageError as e:
+ return image
# Save image format
- format = image.format
+ format = format or image.format or "JPEG"
# Fetch any EXIF data
- exif = image._getexif()
+ try:
+ exif = image._getexif()
+ except AttributeError as e:
+ exif = None
# Rotate the image
if exif:
image = image.rotate( 90, expand=True)
# Remove any alpha-channels
- if image.format == "JPEG" and not image.mode == "RGB":
+ if format == "JPEG" and not image.mode == "RGB":
# Make a white background
background = PIL.Image.new("RGBA", image.size, (255,255,255))