Press "Enter" to skip to content

Hogyan készítsünk GIF-et a hatások után

Mad GIF átalakító az animált matricákhoz a Telegram számára

Ezer szó helyett

Az XZibit is boldog, mert itt a GIF-t behelyezzük a CDPV-be GIF-ba beillesztendő matricákba!

És most a megvalósítás részleteiről.

Mindez a Chatik Telegram fejlesztőkkel folytatott megbeszélésekkel kezdődött az elkövetkező személyről:

A férfi azt mondta – az ember tette! Az első prototípus a párnán és az SVGWrite-on, szétszereli a Gif’ku-t a képpontokon, és az SVG előnézetben vektoros négyzetekké alakítva.

A szórakozás megkezdődött ..

JSON – nyitott formátum, azt mondták, hogy

A távirat formátumaival, így és az ügyben. Támogatta a GIF animációkat – valójában az MP4 videóvá alakul. A matricák támogatását – a PNG-ben kirakodnak, de webbe alakulnak át. Ezúttal minden őszintebb: a bejáratnál, majd a kijáratnál.

A telegramban lévő animált matricák esetében nem használnak GIF-t, nem videót, és még egyetlen jól bevált vektorgrafikus formátumú svg vagy -! – Flash. Benne részt vesz az újdatonsági formátumban, amely a Wing Airbnb – Lottie alatt felszabadult. A mobilfejlesztő környezetben némi hírnév volt, de a telegramnak köszönhetően talán nagy népszerűséget fog kapni.

Lényegében a Lottie fájlok sorozatban JSON projektek Adobe After Effects, a maximális végrehajtási összes funkcióját a program. A kijelzőn, sajnos, minden nem olyan rózsás. Bár a könyvtár készített “hivatalos” megvalósításai Lottie és sokat rendeznek, csak a telegram platform alá tartoznak: Android, iOS, Qt és Web – csak a formátum jellemzőinek részét képezik mindegyikben. A távirám még tovább és korlátozott támogatott képességekkel is ment, és “feltalálta” a formátumukat, amely eltér a szokásos Lottie-tól, csak a Gzip és a paraméter csomagolásával . Úgy tűnik, tudják, hol dolgozik Denis Popov most! 🙂

És ha minden elég jó a dokumentáció könyvtárak különböző platformokon, akkor meg legalább néhány leírás az eszköz a formátum, sajnos, nem volt lehetséges – csak JSON-ütemezési forráskód Lottie-Web. A meglévő animációkban kellett parannyalnia, hogy megértsem az általános formátum fogalmát. A reálfájloknak a rendszerrel való eltérések is megtalálhatók: különösen a 4-es típusú rétegekben a rendszer szerint a beágyazott tárgyakat az ingatlan tárolják – azonban a valódi fájlok kulcsát hívják, és nem működik, és nem működik.

A formátumú árnyalatok:

  • A fájl egy rétegből áll. A GIF-vel ellentétben minden réteg tetszőleges indítási és végidőt tartalmazhat. Lehet (pontosabban, szükséges) Különböző transzformációk alkalmazása: méretezés, fordulás, átlátszóság és t.D. A rétegek akár háromdimenziós is lehetnek (tiltott a távirathoz).
  • A réteg “formák” (formák) áll. Sok típusuk van, egyesek nem használhatók a táviratban. A gyakorlatban, hogy a réteg megjelenjen, három számot kell tartalmaznia: a kontúr (a kész animációkban általában típusú görbék beziers; a konverter még csak típusú téglalapokat használ), töltse ki (típus) és transzformáció (típus) ).
  • A raszteres elemeket is tartalmazhat, szöveges rétegeket hozhat létre, állítsa be a rétegparaméterek és számok összekapcsolását a kifejezéseken keresztül. Mindez az ízletes is tilos a táviratban.

Innen közvetlenül a problémát követi: redundancia. Bár az alapértelmezett beállításokat transzformációs paraméterek nemrégiben került a JSON rendszer – nem valósították meg őket a könyvtárakban. Szóval kifejezetten meg kell kérdezned őket.

Úgy tűnik, hogy ez egyáltalán nem probléma? Még egy egyszerű GZIP jól megbirkózott a tömörítés cryingly ismétlődő adatok, és 1 MB nyers JSON varázslatosan válik egy pár tíz kilobájt, amely nyugodtan megtörni az igényelt limit 64 Kb. Nem volt valami!

Azt letöltése, az azt jelenti, hogy a Lottie-Web nyugodtan jelenik meg, a távirat -, és itt van, nem feltételesen gyönyörű pixel-art nézett rám statikus bekent ezt:

Mit?! És kiderült, hogy egyértelműen nincsenek meghatározva az összeomlott adatokon Limit 1 MB-ben. A reprezentatív telegram csapat azonnal megerősítette és jelentette be a határérték közelgő emelését 2 MB-re.

Még ha ezek a problémák megoldódnak – matrica így 1 MB tömörítetlen adatot nem tartalmazó, átalakítások nem lesz elérhető a felhasználók számára a régi változat a távirat. Tehát nyilvánvalóan betartja a korlátozásokat.

Az átláthatóság fontos

Párna, az OpenCV-vel együtt, ipari szabványnak nevezhető a Python képfeldolgozásához. Ráadásul nem rossz és a GIF jellemzői: az indexelt színek támogatása, hozzáférést biztosít a palettához. Támogatja a pixel-térkép átalakítását a numpy-tömbbe, amely fontos a produktív feldolgozáshoz. Még a színstatisztikák is összegyűlnek! De feltárott hátrányok:

  1. Nem volt dokumentált módja annak, hogy átlátszó színindexet kapjunk. Ideiglenes megoldásként kellett eljárnom, hogy az átlátszó szín a leggyakoribb, de a valódi gifekben nem mindig így van.
  2. Ugyanez a késés között a keretek között: a párna csak a képeket a képek sorozata, haladéktalan információk nélkül.
  3. Néha a részleges kereteket helytelenül helyezték el.

Ezért cserélnék kellett. Gif2numpy modul úgy tette, mint ő. Ez „kihegyezett” a jellemzői GIF és hozzáférést biztosít az összes műszaki tulajdonságainak képeket és egyéni kereteket, beleértve a GCE. Így az olvasási késedelem problémája dönt.

Átláthatóság, ahogy kiderült, a GIF2Numpy egyáltalán nem támogatja: a színeket azonnal három csatornára konvertálják, egy kicsit bájtuk, kivéve a színek bit és megőrzését. Szerencsére a modul egy fájlból áll, így nem volt nehéz felvenni a projektbe, és módosítani, fenntartva az átláthatóság színét .

A részleges keretekkel kapcsolatos probléma nem triviális volt. Gif2numpy megpróbálja az előző nyilatkozatát, de nem ellenőrzi az átfedő paramétereket, ezért a helyes eredmény is nem mindig jön. Annak érdekében, hogy ne rendezze a zászlókat, hozzáadta a képekkel ellátott képek előfeldolgozását – a részleges kereteket teljes mértékben átalakítja. És ugyanakkor vezeti őket a globális paletta használatához, amely megszüntette annak szükségességét, hogy külön-külön feldolgozza az átlátszó színt a saját keret paletta használatakor.

Erősebb vagyok, mint én

A négyzetek jóak, de ilyen korlátozásokkal több fantáziát kell mutatnod, különben nincsenek miniatűr gifek a táviratban.

Az első, aki mozog, valami hasonlít a RLE-hez: az azonos színű szomszédos vízszintes négyzetek egy téglalapba vannak kombinálva.

Következő – Cheroidok Lottie jellemzői. Mivel az egyes rétegek tetszőleges kezdési és befejezési idővel rendelkeznek – olyan technikát alkalmazhatunk, amelyet a video-kodekek már régóta használtak, részben a GIF-ben: a négyzetek egy helyen maradnak több képkocka esetén amelyet a kijelző cseréje. Néhány más. Mint megvalósult, eddig csak a szomszédos rétegek párjai számára.

Fejlesztési tervek

Az itt alkalmazható ötletek ömlesztve:

  • Ismerje meg bármilyen méretű monokróm területeket. Összetörheted őket egy sor téglalap, amelyhez jó algoritmus van. Ugyancsak célszerű átalakítani őket a kontúr, de beárnyékolja annak szükségességét, hogy adja meg az összes pontot a fénysugár görbék Lottie – téglalapok egyes esetekben lehet nyereséges.
  • Elismeri a forgalmat. Technika, ismét, mivel az ősi idők a video kódokban. Ha ugyanaz a kontúr nem változtatja meg az űrlapot a keretből a keretig, de csak a koordináták – akkor érdemes megmunkálni, ha több rétegre van szükség, hogy egy rétegre átalakuljon.
  • Ismerje meg néhány régió “fedezetét”. Példa:

    Az egyik színű téglalapon felülmúlta a másik szín képpontjait. Ahelyett, hogy megszakítaná ezt a téglalapot egy csomó kicsi, vagy képes egy komplex alak beillesztésére – egyszerűen csak egy egész téglalap tetejére helyezheti őket.

  • A görbék és az ellipszisek, a gradiens elismerés. Elrontja a pixel varázsa, de a gif’ok tömöríthetősége javul. A gradiensek még a doped “csokorban” is garantálom!
  • Tömörítés veszteségekkel. Először is, a diszstering megszüntetése, sőt a nem nélküli képeken is, nem fogja megsérülni a befolyást. Ez valószínűleg megbirkózik a fent említett gifsicle.

Linkek

  • Források. A legtöbb szörnyű.
  • A csatorna, amelyen átadom a sikeresen átalakított GIF’OK csomagolását.

Comments are closed, but trackbacks and pingbacks are open.