mirror of
https://github.com/OpenVGLab/OmniLottie.git
synced 2026-09-17 07:36:27 +00:00
Initial Commit
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import json
|
||||
import zipfile
|
||||
|
||||
from .base import importer
|
||||
from ..parsers.baseporter import ExtraOption
|
||||
from ..parsers.tgs import parse_tgs
|
||||
from ..objects import Animation, assets
|
||||
|
||||
|
||||
@importer("dotLottie Archive", ["lottie"], [
|
||||
ExtraOption("id", help="ID of the animation to extract", default=None)
|
||||
], slug="dotlottie")
|
||||
def import_dotlottie(file, id=None):
|
||||
with zipfile.ZipFile(file) as zf:
|
||||
with zf.open("manifest.json") as manifest:
|
||||
meta = json.load(manifest)
|
||||
|
||||
if id is None:
|
||||
id = meta["animations"][0]["id"]
|
||||
|
||||
info = zf.getinfo("animations/%s.json" % id)
|
||||
|
||||
with zf.open(info) as animfile:
|
||||
an = Animation.load(json.load(animfile))
|
||||
if an.assets:
|
||||
for asset in an.assets:
|
||||
if isinstance(asset, assets.Image) and not asset.is_embedded:
|
||||
fname = asset.image_path + asset.image
|
||||
if fname in zf.namelist():
|
||||
with zf.open(fname) as imgfile:
|
||||
asset.load(imgfile)
|
||||
return an
|
||||
Reference in New Issue
Block a user