2011-01-17 12 views

答えて

6

うわー、私は決して期待していない機能リクエストです! sorl.thumbnailはエンジン設定が可能で、PILとpgmagickが付属しています。私はimagemagickをアニメーションGIFのサイズを変更する方法があると思うので、おそらくpgmagickはこれを行うことができますが、私はこれをテストしておらず、出荷されたエンジンをそのまま使用することはほとんどありません。

+0

新しいものはありますか? sorl.thumbnailアニメーションGIF画像のサイズを変更できますか?Pluggable Engineサポート(ImageMagick、PIL、pgmagickを含む)が見つかりましたか? – newlife

2

私はgifでsorlの作業をすることができました。

  1. 画像magickまたはgraphics magickバックエンドを使用する必要があります(PILはgifサイズ変更をサポートしていません)。また、pgmagickを試すこともできますが、うまくいくかどうかわかりません。
  2. あなたのコードでこれらのどこかを入れて:

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

をあなたは、これが

UPDをどのように機能するかを見つけるために、SORL-thumnailソースを見てとることができます。これは、テストされていません。あなたが何をしているかを確信している場合にのみ、これを使用してください。

2

私は実用的なソリューションを持っています(sorl-thumbnail 11.12.1bでテスト済み)。

#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

が、私は私の例を共有する:

# -*- 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 
関連する問題