Hvordan animere GIF i ImageMagick

Hvordan animere GIF i ImageMagick

En animasjon er ganske kul. Jeg mener, det er animert, hvordan kan du ikke like det, ikke sant? Men visste du at en animasjon ikke er noe mer enn en haug med bilder satt sammen og spilte etter hverandre, super fort? Når du ser en animasjon, er det ikke annet enn en haug med bilder som spilles raskt nok slik at øynene dine ikke kan fortelle at de er bilder. Øynene dine tolker dem som en liten film. Nå, at vi vet hvordan en animasjon er laget, la oss komme til det og lage noen.

I denne opplæringen vil vi vise deg hvordan du animerer ved å bruke Imagemagick. Vær oppmerksom på at Imagemagick er en veldig grundig pakke, og du kan gjøre mye. Så vi vil bare dekke det grunnleggende om animasjon.

Installere Imagemagick

Vi trenger Imagemagick for denne prosessen, så la oss installere den først ved å bruke følgende kommando:

sudo apt-get installer imagemagick

Grunnleggende animasjon

Bilder er basen til en animasjon. For denne animasjonen har vi 10 bilder. Det første bildet er et blankt lerret. Den andre har en L på seg. Den tredje har en L og et jeg på den. Den fjerde har en L, en i og n på den, og så videre til det er fullført for å stave “Linuxhint”.

Husk at når du nummererer bildene, må du være forsiktig. I dette tilfellet, hvis vi hadde nummerert bildene som PIC-1 til PIC-10, ville ikke programmet ha generert den samme GIF som om vi hadde nummerert det som PIC-01 før PIC-10. Dette er fordi PIC-10 kommer etter PIC-1. Men PIC-10 kommer ikke rett etter PIC-01; PIC-02 kommer etter PIC-01. Så hvis du har 100 bilder, vil du bruke tre sifre for å nummerere dem. Bruk for eksempel nummereringene PIC-001 til PIC-100.

La oss begynne å animere.

CD -nedlastinger
(Naviger til mappen som inneholder bildene dine.)

Konverter -delay 20 -Loop 0 Pic-*.GIF -animasjon.gif

Pic-*.GIF: De første 10 bildene vi har (stjernen betyr inkluderer bilder med alt i den posisjonen).

animasjon.GIF: Navnet på utgangen (den animerte GIF).

-Loop: Loop er antall ganger animasjonen må spilles på nytt. Hvis du setter dette tallet til null, vil det være en uendelig sløyfe (Never Ending Loop).

-Forsinkelse: Angir forsinkelsen på 1/100. sekund.

Hva har vi skrevet her? Vi tar de 10 bildene som vi opprettet, og vi lager en animasjon som spiller bildene etter hverandre med en liten forsinkelse mellom bildene. Når GIF er generert, vil den bli kalt “Animation.gif ”og vil spille kontinuerlig.

Hvis du vil endre størrelse på animasjonen, bruk følgende kommando:

Konverter -Resize 768x576 -Delay 70 -Loop 0 Pic-*.GIF -animasjon02.gif

Poenget er at du kan legge til så mange parametere du vil.

Sideanimasjon

I forrige eksempel spilte vi ett bilde av gangen. Men hver gang et bilde spilles, blir det forrige bildet fjernet. PIC-01 ble spilt først, deretter Pic-02, deretter PIC-03. Men i dette tilfellet, PIC-01, PIC-0, til PIC-10 ikke var alle i samme ramme på noe øyeblikk. I en sideanimasjon, pic-*.GIF er alle på lerretet på slutten. Så det forrige bildet blir ikke fjernet. For å gi deg en ide om hvordan dette er, la oss ta et nytt sett med bilder.

Konverter -lever 100 -størrelse 1000x1000 XC: Skyblue \
-Side +0 +0 foto11.jpg \
-side +500 +0 foto22.jpg \
-Side +0 +500 Photo33.jpg \
-Side +500 +500 Photo44.jpg \
-Loop 0 Animation03.gif

Vi vet hva forsinkelsen og sløyfene gjør.

-Størrelse: Dette er størrelsen på lerretet ditt. Du kan sette den til hvilken som helst dimensjon du vil ha. I vårt eksempel satte vi den til 1000 × 1000.

XC: Skyblue: Dette er bakgrunnsfargen. I dette tilfellet har vi valgt SkyBlue som bakgrunnsfarge.

-Side: Sidebryteren blir fulgt av forskyvningsverdiene. Med andre ord, etter sidebryteren, skriv ned et pluss tegn og hvor på x-aksen vil du at bildet skal være og deretter på y-aksen. Husk at øverste venstre hjørne er 0, 0 eller +0 +0. Her, Photo11.JPG -bilde er plassert på (0,0). Photo22.JPG -bilde er plassert på (500,0). Photo33.JPG -bilde er plassert på (0 500). Og til slutt foto44.JPG -bilde er plassert på (500 500). Husk også at for y-aksen er nedover positivt. Alle bilder her har en oppløsning på 500 × 500. Etter forskyvningsverdiene kan du skrive ned navnet på bildet som denne forskyvningen gjelder.

Animasjon03.GIF: Navnet på utdataene.

Kast tidligere

I neste eksempel, hvis vi vil at bildet skal gå tilbake til det første lerretet før du fortsetter, la oss ta koden.JPG, legg det på lerretet, fjern det fra lerretet, gå tilbake til bakgrunnsretten og legg deretter maten.JPG -bilde, etc. La oss vise deg et eksempel:

Konverter -Sponer ingen -Delay 0 \
-Størrelse 1000x1000 XC: SkyBlue +Antialias \
-disponere forrige -forsinkelse 100 \
-Side +0 +0 foto11.jpg \
-side +500 +0 foto22.jpg \
-Side +0 +500 Photo33.jpg \
-Side +500 +500 Photo44.jpg \
-Loop 0 Animation04.gif

Her er det bare ett nytt begrep: avhendingsbryteren. Når du bruker ordet forrige med avhending av, returnerer det lerretet til forrige tilstand før du legger neste bilde på den. Her er det første permanente lerretet lerret. Deretter legger vi til koden.JPG -bilde, og etter en kort forsinkelse vender vi tilbake til bakgrunnssynet vårt. Deretter viser vi maten.JPG -bilde og gå tilbake til bakgrunnen vår osv. Du får bildet, ikke sant?

For mer informasjon om animasjoner ved hjelp av Imagemagick, besøk https: // Legacy.Imagemagick.org/bruk/anim_basics/.

Konklusjon

Animasjoner er ganske kule, og de har en tendens til å være nyttige her og der. Ved hjelp av Imagemagick er det mye du kan gjøre når det gjelder animasjon. I denne opplæringen lærte vi imidlertid bare om det grunnleggende om animasjoner. I sin enkleste form kan du ha mange riktig merkede bilder som du kan bruke til å lage en lysbildefremvisning - i utgangspunktet ved å vise bildene i en gitt rekkefølge (PIC01, deretter PIC02, deretter PIC03, etc.). I den andre metoden kan du legge over bilder. Vi har pic1, deretter pic1/pic2, deretter pic1/pic2/pic3, etc. Ved å bruke den disponere tidligere metoden, kan du vise et bilde, gå tilbake til det originale lerretet, og deretter vise et andre bilde osv. (Bakgrunn, PIC01, bakgrunn, PIC02, bakgrunn, PIC03, etc.). Uansett hvilken metode du bruker, kan du lage gode animasjoner med et øyeblikk. Selv om koden ser kjedelig ut, er den fremdeles en linser!