GifAminaatiota
Petri Keckman

Joistakin ennakkotiedoista poiketen en tällä kertaa tehnytkään "toimitus esittelyssä" -artikkelia itsestäni, mutta jotakin yhtä tylsää: opastan gif-animaatioiden tekoa Amigalla.

Tiedättehän ne silmiä rasittavat, vilkkuvat ja välkkyvät mainokset www-sivuilla? Se hyvä puoli niissä on, että saa liikkuvaa kuvaa www-sivuille ilman JavaScriptiä ymmärtäviä selaimia.

Itseäni miellyttävät animaatiot, jotka ovat välineensä näköisiä. Tarkoitan, että pidän tietokoneanimaatioista silloin kun ne ovat tietokoneella tehdyn näköisiä. En pidä tietokoneanimaatioista, jos ne ovat sen näköisiä, että Walt Disney olisi tehnyt ne käsin paremmin. Jos siis tehdään tietokoneella animaatiota, niin tehdään sitä ohjelmallisesti tuotetuista kuvista.

Tuotetut kuvat saa muutettua gif-formaattiin esim. GfxCon-ohjelmalla, joka löytyy Aminetistä:

http://ftp.sunet.se/pub/aminet/gfx/conv/gfxcon.lha (228 kt)

Vaiheittaiset gif-kuvat saa muutettua gif-animaatioksi WhirlGif-ohjelmalla:

http://ftp.sunet.se/pub/aminet/gfx/conv/WhirlGif.lha (61 kt)

Koska kyseisiä ohjelmia voi käyttää myös käskyriviltä parametreilla, voidaan varsinaiset kuvat tuottavat ohjelma (josta esimerkkinä Blitz-ohjelma gifanim.exe Ohjelmat-paketissa) pistää tekemään samalla myös skriptin, jolla kuvat muutetaan animaatioksi. Jos esim. ohjelma tallentaa RAM:-hakemistoon kuvat:

kuva1.iff
kuva2.iff
kuva3.iff
kuva4.iff
kuva5.iff
kuva6.iff

niin samalla se tuottaa skriptin so. tulostaa tiedostoon RAM:make seuraavat käskyt, joilla animaatio tuotetaan kuvien tuottamisen jälkeen:

Stack 20000
GfxCon RAM:kuva1.iff Format GIF
GfxCon RAM:kuva2.iff Format GIF
GfxCon RAM:kuva3.iff Format GIF
GfxCon RAM:kuva4.iff Format GIF
GfxCon RAM:kuva5.iff Format GIF
GfxCon RAM:kuva6.iff Format GIF
WhirlGif -o anim.gif -loop RAM:kuva1.gif RAM:kuva2.gif RAM:kuva3.gif RAM:kuva4.gif RAM:kuva5.gif RAM:kuva6.gif

Esimerkkiohjelmalla voidaan tuottaa kahdet erilaiset kuvasarjat. Parametrilla, joka on joko 1 tai 2 valitaan kumpi tuotetaan. Jos parametria ei anneta, tuotetaan 1.

Oleellinen asia kuvat tuottavissa aliohjelmissa on muuttujan vaihearvo, joka kertoo monesko kuvan vaihe on menossa. Gif-animaatioissa on otettava huomioon se että ensimmäisen vaiheen on seurattava luontevasti viimeistä vaihetta.

Esimerkkiohjelmassa ensimmäisessä animaatiossa kuva tuotetaan kiertämällä spiraalimaisesti keskipistettä. Vaihe kertoo alkukulman. Toisessa animaatiossa piirretään kasvavia neliöitä, jotka joka kerta lasketaan kaikki, mutta se piirretään vain jos neliön järjestysluku on jaollinen vaiheella. Eli vaihe voidaan ottaa monella tapaa huomioon riippuen kuvan tuottotavasta.

Tein ohjelman Blitz Basicilla, koska sillä on helppo napata screenistä shape ja tallentaa se. Jos aiot tuottaa kuvia muilla ohjelmointikielillä, niin aina voit esim. grabscreen-toimintoa tai ohjelmaa käyttämällä tallentaa tuottamiasi vaihekuvia. Skriptitkin voi kirjoittaa käsin ja käyttää uudestaan samoja. Esimerkki-gif-animaatiot ovat myös Ohjelmat-paketissa.