2012-04-03 18 views
7

pythonとPILまたはPythonMagickを使用してGIFアニメーションイメージのサイズを変更したいと思います。私は解決策を見つけることができません。 PILとサムネイルはjpgとpngでは使えますが、gifでは使えません。 ImageMagickにはコマンドmogrify/convert -resize '1280x1024>'がありますが、ドキュメントを見つけることができず、pythonmagickでどのように行うかわかりません。GIFアニメーション、pil/imagemagick、Pythonのサイズ変更

誰もが解決策を知っていますか?私は、OS /サブプロセスを使用して変換し、最悪の場合には

; -S

感謝。

+1

私はあなたがその間にそれを行うことをお勧めしたいと思います。サブプロセスを使用して変換してください。 Pythonの魔法はこのような適切なメンテナンスの欠如に悩まされています.PILはアニメーションGIFの読み込みだけをサポートしています。質問を開いたままにしておいてください。おそらく、psthonmagicでサイズ変更を行うためにpsnippedを使っている人が現れます。 – jsbueno

答えて

12

images2gifは、blog pageにリンクされた短いPILベースのモジュールで、hereが利用できます。これを処理するコードはrose.gifです。私はimages2gif.readGifを「numpyアレイとして読む」プロパティをfalseに設定し、PIL thumbnail機能を使用できるようにPILイメージのリストを取得しました。

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) 

私は透明性を維持するかどうかはわかりません、そうする私の試みは(これまでに)失敗しています。そこにいくつかの成果物が残っているが、それはオリジナルよりもずっといいです

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

+5

アニメーションの速度を保存するには? –

+2

http://www.velocityreviews.com/forums/t354000-pil-and-transparent-gifs.htmlによると、あなたは透明度= im.info ["transparency"]で自分自身で透明度を扱わなければなりません。 ...; – Collin

3

いくつかの素晴らしい人は、透明性を考慮しimages2gif.pyの更新バージョンを作りましたよ!

+3

最初の試行で失敗しました - パレットリストは[None、None .. None]のようになり、新しいファイルに書き込もうとします。残念なことに、コードの一部にテストが含まれていない場合に起こると予想されることです。オリジナルのものは少なくとも意味のあるメッセージを出します: 'RuntimeError:パレットを取得できません。あなたは代わりにイメージを試してみるべきでしょう。 –

関連する問題