stavo affrontando lo stesso problema con il mio GIF encoder classe/decoder che ho scritto qualche tempo fa (e migliorando con il tempo di tempo). Ho scoperto la soluzione per questo solo ieri. Il GIF è completamente soddisfacente, il problema è nella parte del browser internet moderno. I browser infetti sono Opera, IE, Chrome (non ha testato altri).
Dopo alcune indagini in materia (confrontando looping e le immagini non looping) ho scoperto che questi browser GIF decoder stanno ignorando i parametri di loop in GIF file. Al contrario, dipendono dall'estensione dell'applicazione non documentata nel primo fotogramma del file GIF.
Quindi la soluzione è aggiungere questo comando di estensione appena prima dei primi dati di immagine del frame. Aggiungi questo chunk:
0x21,0xFF,0x0B,"NETSCAPE","2.0",0x03,0x01,0x00,0x00,0x00
Ciò costringerà i browser a scorrere all'infinito.
Qui esempio:
vista Hex in modo da vedere come si è aggiunto:
Il GIF non è sensibile sull'inserimento/riordino pezzi non immagine di dati in modo da poter inserire questo prima della prima immagine su qualsiasi posto tra qualsiasi altra estensione. L'ho messo direttamente dopo l'intestazione + palette. Che può essere fatto con C++ o qualsiasi altra lingua. (non è necessaria la re-encoding). Per maggiori informazioni visita:
[Edit da Reed Dunkle]
È anche possibile farlo manualmente con un editor esadecimale. Ho usato "Hex Fiend" su macOS Sierra.
Cerca 21 F9
nelle parti iniziali di hex (questa è l'intestazione). Nella foto sopra, è 21 F9 04 04 00 00 00 00
. La tua potrebbe essere leggermente diversa, ma nota che arriva prima dello 2C
, che segna l'inizio di un blocco immagine.
Prima della 21 F9
... porzione, inserto seguente esagonale, contrassegnato come "estensione applicazione" nella foto qui sopra:
21 FF 0B 4E 45 54 53 43 41 50 45 32 2E 30 03 01 00 00 00
Salva, e testarlo.
Addon da Spektre: Attenzione 21 F9
marchi GFX pezzo estensione che è opzionale in modo che non può essere presente per tutti o qualsiasi frame (ma che in realtà è raro in questi giorni)
Mostraci la tua immagine - caricala da qualche parte –
@ZoltanToth Dove vorresti che la caricassi? È un file .gif che ho generato da http://ajaxload.info/. – Ryan
Sembra funzionare - http://jsfiddle.net/3ZWpD/1/ (Ho usato lo stesso generatore per la GIF) –