Gibt es eine Möglichkeit, animierte GIFs mit Sorl zu verändern?Animierte GIF-Größenanpassung mit Sorl-thumbnail
Antwort
Wow, das ist eine Feature-Anfrage, die ich nie erwarten würde! sorl.thumbnail
ist jetzt Engine konfigurierbar und kommt mit PIL und pgmagick. Ich denke, es gibt Möglichkeiten, animierte Bilder imagemagick zu skalieren und vielleicht kann pgmagick das tun, aber ich habe das nicht getestet und es ist sehr unwahrscheinlich, dass es mit den ausgelieferten Engines wie es ist.
Irgendwas Neues? Kann sorl.thumbize Größe ändern animierte gif Bild jetzt ?? Ich habe festgestellt, dass es Pluggable Engine Unterstützung (ImageMagick, PIL, pgmagick enthalten)? – newlife
Ich habe es geschafft, sorl arbeiten mit gif.
- Sie müssen Bild Magick oder Grafik Magick Backend verwenden (PIL unterstützt keine GIF-Größenänderung ohne etwas Hacking). Sie können auch versuchen, pgmagick, aber ich weiß nicht, ob es funktioniert.
diese irgendwo im Code Put:
from sorl.thumbnail import base base.EXTENSIONS.update({'GIF': 'gif'})
Sie einen Blick auf SORL-thumnail Quelle nehmen zu finden, wie diese
UPD funktioniert: Es ist nicht getestet. Verwenden Sie dies nur, wenn Sie sich sicher sind, was Sie tun.
Ich habe funktionierende Lösung (getestet mit Sorl-thumbnail 11.12.1b). Benötigt Wand Backend:
#sorl_extensions.py
from sorl.thumbnail.base import (
ThumbnailBackend, EXTENSIONS,
default_settings as thumbnail_default_settings
)
EXTENSIONS.update({'GIF': 'gif'})
class GifThumbnailBackend(ThumbnailBackend):
def _get_format(self, file_):
file_extension = self.file_extension(file_)
if file_extension == '.jpg' or file_extension == '.jpeg':
return 'JPEG'
elif file_extension == '.png':
return 'PNG'
elif file_extension == '.gif':
return 'GIF'
else:
from django.conf import settings
return getattr(settings, 'THUMBNAIL_FORMAT', thumbnail_default_settings.THUMBNAIL_FORMAT)
#settings.py
THUMBNAIL_ENGINE = 'sorl.thumbnail.engines.wand_engine.Engine'
THUMBNAIL_BACKEND = 'tools.sorl_extensions.GifThumbnailBackend'
THUMBNAIL_PRESERVE_FORMAT = True
Ich werde mein Beispiel teilen:
# -*- coding: utf-8 -*-
import os
from sorl.thumbnail import get_thumbnail
def get_file_extension(obj):
filename, file_extension = os.path.splitext(obj)
return file_extension
def get_thumbnail_size(obj, size):
img_format = 'JPEG'
if get_file_extension(obj.url) == '.png':
img_format = 'PNG'
if get_file_extension(obj.url) == '.gif':
from sorl.thumbnail import base
base.EXTENSIONS.update({'GIF': 'gif'})
img_format = 'GIF'
return get_thumbnail(obj, size, quality=90, format=img_format).url
jeden Erfolg zu diesem Thema? –