2012-04-03 100 views
7

我想使用python和PIL或PythonMagick更改GIF動畫圖像的大小。我找不到解決方案。 PIL和縮略圖方法適用於jpg和png,但不適用於gif。 ImageMagick有命令mogrify/convert-resize'1280x1024>',但我找不到文檔,我不知道如何用pythonmagick做到這一點。調整GIF動畫,pil/imagemagick,python

有誰知道解決方案?

在我使用OS /子進程和轉換最壞的情況下; -S

感謝。

+1

我會推薦你​​在此期間做到這一點 - 使用子進程和轉換。 Pythonmagic遭受這種缺乏適當維護的困擾 - 而PIL只支持讀取動畫GIF,而沒有其他。讓問題保持開放 - 也許有人用psmaped來做Pythonmagic的調整大小顯示出來。 – jsbueno 2012-04-03 14:22:10

回答

12

您可以使用PIL和images2gif,這個blog page上連接的基於PIL的短模塊,以及可用的here。用於處理這個rose.gif的代碼如下。我將images2gif.readGif'讀爲numpy數組'屬性設置爲false以獲取PIL圖像列表,以便我可以使用PIL thumbnail函數。

Orignial:rose加工:small rose

import Image 
import images2gif 

frames = images2gif.readGif("rose.gif",False) 
for frame in frames: 
    frame.thumbnail((100,100), Image.ANTIALIAS) 

images2gif.writeGif('rose99.gif', frames) 

我不知道如何保留透明度,我嘗試這樣做都失敗了(到目前爲止)。

+5

如何保存動畫速度? – 2012-09-05 16:09:50

+2

根據http://www.velocityreviews.com/forums/t354000-pil-and-transparent-gifs.html,你必須自己處理透明度,透明度= im.info [「transparency」]; ...; out.save(「out.gif」,transparency = transparency) – Collin 2012-09-22 03:19:03

3

一些了不起的人發images2gif.py的更新版本,佔透明度:

https://bitbucket.org/bench/images2gif.py/overview

還有一些文物,但它的方式比原來的更好!

+3

第一次嘗試失敗 - 調色板列表看起來像[None,None .. None]並嘗試將其寫入新文件。不幸的是,當一段代碼不包含測試時,這就是你所期望的。原始的一個至少給出了一個有意義的消息:'RuntimeError:無法獲得調色板。也許你應該試試imageio。「 – 2015-07-08 13:54:22