2011-01-17 11 views

Antwort

6

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.

+0

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

2

Ich habe es geschafft, sorl arbeiten mit gif.

  1. 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.
  2. 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.

2

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 
0

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