[PHP] Förstora om animerade GIF bilder

Permalänk
Medlem

[PHP] Förstora om animerade GIF bilder

Jag har ett script som förstorar om alla bilder som laddas upp på en sida så att jag får ut en thumbnail och en stor version av bilden, fungerar jättebra, sålänge det inte är en animerad GIF.
Det jag är ute efter är att förstora om GIF bilden och behålla animationen.
Vet att det finns stöd för animationen i senaste versionen GD men den finns inte för PHP/Windows.

Så då har jag antagit följande scenario:
En animerad GIF bild består ju såklart av flera olika bilder, då tänkte jag att jag tar ut bilderna ur animationen, förstorar om dom var för sig och sätter sedan ihop animationen igen, jag är till 95% klar, förutom en sak, jag känner att jag missar att extrahera en bild från animationen, en bakgrund eller liknande som ska synas i alla bildrutor.

Som ni kan se så saknas det någonting på alla frames förutom den första, därav min misstanke att jag missar någon bild, t.ex. en bakgrund, eller att första bilden egentligen är två.

Dock så har jag kört fast nu hur jag ska gå vidare, all hjälp uppskattas, postar ingen kodexempel här just nu då det i början mer är fråga om hur GIF formatet fungerar i teorin och min saknade information ligger och hittas i animationen.
Någon som tror sig vara på spåret men behöver mer information, skrik till så ger jag allt som behövs.

Den eventuella bakgrund jag letar efter tycker jag borde finnas i frame nummer ett, men som ni ser så innehåller ettan även en mus, så att om man lägger resterande frames ovanpå ettan så kommer det i vissa fall att synas två möss, därav så borde inte ettan kunna vara bakgrunden, notera att detta är när jag förutsätter att det är en bakgrund jag letar efter och att de olika frames'n bara innehåller förändringarna för att spara utrymme.

Originalanimationen

Min omförstorade animation

Alla frames som följer är i originalstorlek, bara min animation har blivit förminskad i storlek utifrån original animationen.

Tre första frames'n

Animationen består av totalt 11 frames, länkar till alla frames:
http://www.rosenson.se/gif/1151573638__0.gif
http://www.rosenson.se/gif/1151573638__1.gif
http://www.rosenson.se/gif/1151573638__2.gif
http://www.rosenson.se/gif/1151573638__3.gif
http://www.rosenson.se/gif/1151573638__4.gif
http://www.rosenson.se/gif/1151573638__5.gif
http://www.rosenson.se/gif/1151573638__6.gif
http://www.rosenson.se/gif/1151573638__7.gif
http://www.rosenson.se/gif/1151573638__8.gif
http://www.rosenson.se/gif/1151573638__9.gif
http://www.rosenson.se/gif/1151573638__10.gif

Permalänk
Inaktiv

Pjao, GIF:ar kan ha lite olika "typ" av bakgrund till varje frame. Sök på "dispose" i http://www.w3.org/Graphics/GIF/spec-gif89a.txt om du är nyfiken.

Permalänk
Medlem

Tack. ändrade till disposal 1 och det blev mycket bättre, körde på två innan, dock så blev animationen inte perfekt, verkar som om jag saknar lite av ursprungsbilderna, för man ser fortfarande några pixlar i kanterna av föregående frame som jag inte listat ut vad det beror på ännu.
Alternativt kan det bero på något problem med transparansen också.

Permalänk
Inaktiv

Det kan vara olika disposalmetoder på olika frames. Tyvärr så är det dåligt drag i servern din för tillfället så jag kan inte ge dig "facit".

Edit: Nuså har jag kollat lite. Originalet hade dispose 1 på alla frames så det stämmer, men lite andra grejjer är ju bevisligen fel. Jag kollade lite snabbt och upptäckte att dina "lösa" frames är trasiga (verkar bara vara "eof-blocket" 0x3B som saknas) så det är värt att kolla upp. Sen hade originalanimationen en annan transparensfärg (Transparency Index i specen, ska vara 255 isf 0). Verkar vara rätt "headerdata" i övrigt.

Permalänk
Medlem

Okej, mm, vet, mitt internet har gått upp och ner just nu.

Ska kolla upp det där du sa, hur kollade du reda på den där informationen?

Tack för hjälpen så länge.

Permalänk
Inaktiv
Citat:

Ursprungligen inskrivet av Rosenson
Ska kolla upp det där du sa, hur kollade du reda på den där informationen?

Inget konstigare än en egen dekoder samt ett stycke debugger.