Esiste la possibilità di ridimensionare gif animate con sorl?Ridimensionamento gif animato con sorl-thumbnail
risposta
Wow, questa è una richiesta di funzionalità che non mi aspetterei mai! sorl.thumbnail
è ora configurabile dal motore e viene fornito con PIL e pgmagick. Penso che ci siano modi per fare gif animate di ridimensionamento imagemagick e quindi forse pgmagick può farlo, ma non l'ho ancora testato ed è improbabile che funzioni con i motori spediti così come sono.
Qualcosa di nuovo? può sorl.thumbnail ridimensionare l'immagine animata gif ora ho trovato che ha il supporto del motore innestabile (ImageMagick, PIL, pgmagick incluso)? – newlife
Sono riuscito a far funzionare sorl con gif.
- È necessario utilizzare image magick o graphics magick backend (PIL non supporta il ridimensionamento gif senza alcuno hacking). Puoi anche provare pgmagick, ma non so se funzionerà.
metterle da qualche parte nel codice:
from sorl.thumbnail import base base.EXTENSIONS.update({'GIF': 'gif'})
Si può dare un'occhiata alla fonte SORL-Thumnail di trovare come funziona
UPD: E 'testato. Usalo solo se sei sicuro di quello che stai facendo.
Ho una soluzione funzionante (testata con sorl-thumbnail 11.12.1b). Richiede 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
voglio condividere il mio esempio:
# -*- 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
Qualsiasi successo su questo argomento? –