को संरक्षित करते हैं, मुझे आश्चर्य है कि पीआईएल का उपयोग करके एनिमेटेड जीआईएफ छवि को स्केल करना संभव है या नहीं। यह सच है image.format == 'GIF' and image.seek(image.tell()+1)
के लिए निम्न मूल्यांकन करता है:आप पीआईएल में एनिमेटेड जीआईएफ छवि को कैसे स्केल करते हैं और एनीमेशन
def scale(self, data, w, h, default_format = 'PNG'):
""" scale image (with material from ImageTag_Hotfix)"""
#make sure we have valid int's
size = int(w), int(h)
original_file=StringIO(data)
image = PIL.Image.open(original_file)
# consider image mode when scaling
# source images can be mode '1','L,','P','RGB(A)'
# convert to greyscale or RGBA before scaling
# preserve palletted mode (but not pallette)
# for palletted-only image formats, e.g. GIF
# PNG compression is OK for RGBA thumbnails
original_mode = image.mode
img_format = image.format and image.format or default_format
if original_mode == '1':
image = image.convert('L')
elif original_mode == 'P':
image = image.convert('RGBA')
image.thumbnail(size, self.pil_resize_algo)
# decided to only preserve palletted mode
# for GIF, could also use image.format in ('GIF','PNG')
if original_mode == 'P' and img_format == 'GIF':
image = image.convert('P')
thumbnail_file = StringIO()
# quality parameter doesn't affect lossless formats
image.save(thumbnail_file, img_format, quality=self.pil_quality)
thumbnail_file.seek(0)
return thumbnail_file, img_format.lower()
मुझे पता है कि एक एनिमेटेड GIF पहचान करने के लिए: विशेष प्लोन के आद्यरूप में ImageField वर्तमान में छवियों से एनीमेशन अपने पैमाने पद्धति का उपयोग करके बढ़ाया खो देता है। मैंने आरजीबीए मोड में कनवर्ट करने की कोशिश नहीं की है लेकिन यह काम नहीं करता है।
पृष्ठभूमि: हमारे प्लोन इंस्टेंस पर हमने डिफ़ॉल्ट छवि प्रकार को संशोधित करने के लिए अपनी छवि फ़ील्ड के मूल_साइज विशेषता को सेट करने के लिए संशोधित किया है ताकि सभी छवियों को उचित गुणवत्ता सेटिंग के साथ स्केल किया जा सके। यह jpegs के लिए बहुत अच्छा काम करता है लेकिन इसका मतलब है कि हम वर्तमान में एनिमेटेड जीआईएफ
एक पैलेट की गई छवि को स्केल करने की संभावना अस्वीकार्य छवि गुणवत्ता में होने की संभावना है। –