2016-12-16 32 views
0

我有以下代碼如何使用魔杖降低gif質量?

from wand.image import Image 

def saveSizes(f, filename): 
    scaled_width = 400 
    scaled_hight = 400 
    with Image() as finalImage: 
     with Image(filename=f) as img: 
      for frame in img.sequence: 
       #frame.transform(resize="%dx%d" % (scaled_width, scaled_hight)) 
       frame.compression_quality = 75 
       finalImage.sequence.append(frame) 
     filename += '.gif' 
     finalImage.save(filename = filename) 
saveSizes('source_file.gif', 'dest_file') 

但「source_file.gif」大小相同「dest_file.gif」的。爲什麼「compression_quality」屬性不起作用?

有沒有更好的方法來減少gif使用魔杖或其他一些python庫的大小。

此外,我在控制檯中獲取gif中每個幀的以下日誌。

Exception ignored in: <bound method Resource.__del__ of <wand.sequence.SingleImage: 901eb12 (200x150)>> 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/site-packages/wand/resource.py", line 232, in __del__ 
    self.destroy() 
    File "/usr/local/lib/python3.5/site-packages/wand/sequence.py", line 331, in destroy 
    self.container.sequence[self.index] = self 
    File "/usr/local/lib/python3.5/site-packages/wand/sequence.py", line 304, in index 
    assert image 
AssertionError: 
+0

恕我直言,以減少的GIF文件的大小最好的辦法是減少顏色數量 - 嘗試將顏色數量設置爲31或63或127,看看是否有幫助。 –

回答

0

compression_quality與源文件(整個文件)正常工作。

我的工作與PDF的例子:

def ConvertFewPagePdfToPngs(pdf): 
    with wand.image.Image(filename = pdf, resolution = 200) as source: 

     source.compression_quality = 99 
     imagess = source.sequence 
     for i in range(len(imagess)): 
      imagess[i].format = 'png' 
      destFileName = r'path' # depends on i 
      wand.image.Image(imagess[i]).save(filename=destFileName) 

,當我試圖申請compression_quality到一個頁面,我得到同樣的錯誤你展示