はじめに
以前、GIFアニメでハマった記事を書きましたが、その時に調べたなかでGIFアニメの分解に興味があったので作ってみました。
GIFアニメを分解する
これはPILの中のImageSequenceでできました。
ついでに、iOSの共有シートから呼び出す仕様にしました。
gif2png
import appex
import console
import photos
import tempfile
from PIL import Image
from PIL import ImageSequence
def main():
if not appex.is_running_extension():
console.hud_alert('共有シートから実行して下さい。',icon='error',duration=2)
return
FilePath = appex.get_image().filename
if not FilePath:
console.hud_alert('GIFイメージが見つかりません。',icon='error',duration=2)
return
gif = Image.open(FilePath)
for i,img in enumerate(ImageSequence.Iterator(gif)):
SaveName = tempfile.gettempdir()+'/tmp.png'
img.save(SaveName)
photos.create_image_asset(SaveName)
console.hud_alert(str(i+1)+'枚の画像を写真に保存しました。', icon='success', duration=2)
appex.finish()
if __name__ == '__main__':
main()
Pythonista3のShare Extension Shortcutsに登録して使います。
【iOS】Pythonista3で共有シートを使う。 - Qiita
使い方
Pythonista3がンストールされてると、写真アプリ等から共有メニューアイコンをタップするとRun Pythonista Scriptというメニューが表示されます。
ここをタップして、あらかじめ登録しておいたスクリプトのアイコンをタップするだけです。