2011-01-17 14 views

Respuesta

6

Guau, esa es una solicitud de función que nunca esperaría! sorl.thumbnail ahora es motor configurable y viene con PIL y pgmagick. Creo que hay formas de hacer que imagemagick cambie el tamaño de los gifs animados, por lo que pgmagick puede hacerlo, pero no lo he probado y es muy poco probable que funcione con los motores enviados tal como están.

+0

¿Alguna novedad? ¿puede sorl.thumbnail cambiar el tamaño de la imagen animada del gif ahora? Encontré que tiene compatibilidad con el motor enchufable (ImageMagick, PIL, pgmagick incluido)? – newlife

2

Me las arreglé para hacer que funcione con gif.

  1. Tienes que usar la imagen magick o graphics magick backend (PIL no admite el redimensionamiento gif sin algunas intrusiones). También puedes probar pgmagick, pero no sé si funcionará.
  2. poner estas en algún lugar de su código:

    from sorl.thumbnail import base 
    base.EXTENSIONS.update({'GIF': 'gif'}) 
    

Usted puede echar un vistazo a la fuente SORL-thumnail para encontrar cómo funciona esto

UPD: Es sin probar. Úselo solo si está seguro de lo que está haciendo.

2

Tengo una solución de trabajo (probada con sorl-thumbnail 11.12.1b). Requiere Varita 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

voy a compartir mi ejemplo:

# -*- 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 
Cuestiones relacionadas