Gambas-it

Gambas3 => Programmazione => Topic aperto da: sandro - 14 Settembre 2017, 18:22:41

Titolo: Gif e cursori animati
Inserito da: sandro - 14 Settembre 2017, 18:22:41
Salve a tutti. Dopo molto tempo ho deciso di provare a creare un programmino per poter gestire una gif animata o un cursore animato, senza usare MovieBox o altri controlli.
Sulla wiki ci sono molti esempi per poter creare una gif ma non c'è nessun riferimento a nessuna libreria per poter aprire, visualizzare e gestire questo tipo di file.
Se qualcuno più esperto di me potesse darmi delle indicazioni gli sarei molto grato. :'( :'( :'(
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 14 Settembre 2017, 20:10:23
... gestire una gif animata o un cursore animato, senza usare MovieBox o altri controlli.
... libreria per poter aprire, visualizzare e gestire questo tipo di file.
Questo comporterà che la gif animata sarà mostrata su una superficie automaticamente generata dalla libreria grafica utilizzata, e pertanto non controllabile direttamente da nessuna risorsa di Gambas.

...però... poiché tu parli di cursori animati, è proprio una superficie indipendente dal Form di Gambas che vuoi ?


Titolo: Re:Gif e cursori animati
Inserito da: vuott - 14 Settembre 2017, 20:29:28
La modalità più diretta, brutale e semplice è utilizzare il Metodo ".Open( )" della Classe Desktop, il quale determinerà l'esecuzione della gif animata mediante il programma di sistema predefinito per l'esecuzione di tali file.

http://www.gambas-it.org/wiki/index.php?title=Eseguire_un_file_Video_mediante_il_Metodo_.Open()_della_Classe_Desktop
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 14 Settembre 2017, 20:50:17
Ciao vuott,
allora io vorrei aprire un file .gif e estrapolare ogni singolo fotogramma in modo da inserirli in dei contenitori di numero uguale al numero dei fotogrammi stessi.
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 15 Settembre 2017, 11:59:16
vorrei aprire un file .gif e estrapolare ogni singolo fotogramma in modo da inserirli in dei contenitori di numero uguale al numero dei fotogrammi stessi.

Ho dato un'occhiata all'organizzazione interna di un file di formato GIF animato; e tenendo conto dei blocchi necessari (header, Logical Screen Descriptor, Global Color Table, Graphics Control Extension, Image Descriptor, Image Data e Trailer), ti propongo una soluzione con le sole risorse di Gambas:

Codice: [Seleziona]
Public Sub Main()

  Dim s, parz1, parz2 As String
  Dim i As Integer
  Dim ii As New Integer[]
 
   s = File.Load("/percorso/del/file/animato.gif")
   
   Do   ' Applichiamo il ciclo "Gianluigi/vuott" per ottenere tutte le occorrenze dell'inizio del blocco "Graphics Control Extension"
     i = InStr(s, Chr(&00) & Chr(&21) & Chr(&F9) & Chr(&04), i + 1)
     If i = 0 Then Break
     ii.Push(i)
   Loop
   
   For i = 0 To ii.Max
     parz1 = Mid(s, 1, ii[0])
     If i = ii.Max Then
       parz2 = Mid(s, ii[ii.Max] + 1, Len(s) - ii[ii.Max])
     Else
       parz2 = Mid(s, ii[i] + 1, ii[i + 1] - ii[i]) & Chr(&3B)
     Endif
     File.Save("/percorso/di/ciascun/fotogramma" & CStr(i) & ".gif", parz1 & parz2)
   Next

End
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 15 Settembre 2017, 12:25:09
Ok. Provato e funzionante(mi salva tutti i fotogrammi che inserirò in dei contenitori. Grazie tantissime!! :ok: :ok: :ok:
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 16 Settembre 2017, 10:00:53
Ci tengo a ringraziare tutto lo staff del forum che si prodiga a cercare di risolvere i tanti problemi che abbiamo noi gamberetti nell'interpretazione del codice Gambas. Grazie ancora tantissime :D :D :D
Titolo: Re:Gif e cursori animati
Inserito da: Gianluigi - 16 Settembre 2017, 13:39:02
Ci tengo a ringraziare tutto lo staff del forum che si prodiga a cercare di risolvere i tanti problemi che abbiamo noi gamberetti nell'interpretazione del codice Gambas. Grazie ancora tantissime :D :D :D

 :ciao: Ti ringrazio molto delle belle frasi, capisco bene cosa intendi per staff, non quell'entità che oramai in pratica si riduce al sottoscritto, ma i molti che cercano di aiutare gli altri con in prima fila il grande Vuott, vera anima di questo forum.

 :D :D :D
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 16 Settembre 2017, 15:33:32
Un grazie particolare a Vuott che se lo merita davvero per tutta la dedizione che dedica a questo forum :D :D :D
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 16 Settembre 2017, 18:20:40
...portatemi pure in processione:

(https://i0.wp.com/www.radiospada.org/wp-content/uploads/2017/05/resizer.jsp-21.jpeg)
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 17 Settembre 2017, 10:22:06
Ciao vuott, ritornando al codice per l' estrazione dei fotogrammi, sto facendo scorrere i fotogrammi con un timer con intervallo ma non è l'intervallo esistente nella gif animata.
Volevo sapere se esiste la possibilità di estrarre le informazioni inserte nella gif riguardanti il tempo di intervallo fra un fotogramma e l'altro.

( ;D ;D Come puoi notare dalla data noi appassionati e attaccati al vile denaro lavoriamo anche domenica!!!) ;D ;D ;D
Titolo: Re:Gif e cursori animati
Inserito da: Gianluigi - 17 Settembre 2017, 13:33:28
Ciao vuott, ritornando al codice per l' estrazione dei fotogrammi, sto facendo scorrere i fotogrammi con un timer con intervallo ma non è l'intervallo esistente nella gif animata.
Volevo sapere se esiste la possibilità di estrarre le informazioni inserte nella gif riguardanti il tempo di intervallo fra un fotogramma e l'altro.

( ;D ;D Come puoi notare dalla data noi appassionati e attaccati al vile denaro lavoriamo anche domenica!!!) ;D ;D ;D

Parlo di una cosa che non ho provato ma, tempo totale diviso fotogrammi non va bene?
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 17 Settembre 2017, 13:41:56
Ciao vuott,
si è talmente semplice che non ci avevo minimamente pensato. Ho provato e va bene! ok. :) :) :)
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 17 Settembre 2017, 13:50:21
Scusa volevo dire Ciao Gianluigi :-[ :-[ :-[
Titolo: Re:Gif e cursori animati
Inserito da: Gianluigi - 17 Settembre 2017, 14:02:29
Non ti devi scusare oramai sono in molti che scambiano i miei suggerimenti per quelli del maestro, capita sempre quando l'allievo sta per superarlo  8)
 :rotfl: :rotfl: :rotfl:
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 17 Settembre 2017, 15:10:17
quando l'allievo sta per superarlo  8)

...molto bene: sarai tu ad essere portato in processione !    :devil:
Titolo: Re:Gif e cursori animati
Inserito da: Top Fuel - 17 Settembre 2017, 15:26:29
Il GIF è un formato coperto da copyright, forse è anche per questo che non si trovano in giro librerie per maneggiarlo.
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 17 Settembre 2017, 16:00:45
Va bè, pazienza. Comunque il risultato che volevamo l'abbiamo ottenuto. La Gif viene aperta e tutti i fotogrammi si possono estrapolare. Buon lavoro a tutti!!
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 17 Settembre 2017, 17:34:07
Il GIF è un formato coperto da copyright, forse è anche per questo che non si trovano in giro librerie per maneggiarlo.
Esiste la libreria specifica Libgif, anche se pure questa non è proprio libera, poi vi sono altre librerie che maneggiano qualcosa delle GIF.
Ad ogni modo la questione da te posta è corretta.
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 17 Settembre 2017, 17:42:38
Volevo sapere se esiste la possibilità di estrarre le informazioni inserte nella gif riguardanti il tempo di intervallo fra un fotogramma e l'altro.
Sì, esiste: i dati di ciascun fotogramma sono anticipati dal blocco chiamato "Graphics Control Extension", il quale è composto come mostrato in queste due immagini:
* http://www.matthewflickinger.com/lab/whatsinagif/images/graphic_control_ext.gif
* https://books.google.it/books/content?id=_nJLvY757dQC&hl=it&pg=PA177&img=1&zoom=3&sig=ACfU3U3RFzzoTENtK-9jcnHYAnCqn5a64Q&w=1025

I byte del blocco che ti interessano sono il 5° e il 6°e si riferiscono al Delay time: essi impostano il ritardo espresso in centesimi di secondo di esecuzione fra un fotogramma (frame) e il successivo. Va precisato e va ricordato che l'ordine di questi due byte è in little-endian !
Va da sé che questa risorsa ti consente anche di diversificare l'esecuzione dei fotogrammi all'interno del file gif animato.
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 17 Settembre 2017, 18:33:59
Ciao vuott
mi sorge una domanda spontanea; si può manipolare legalmente a scopo amatoriale cioè senza fini di lucro, una Gif animata? Se no abbiamo fatto un lavoro inutile quindi non vale la pena
di lavorarci sopra!!! ??? ??? ???
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 17 Settembre 2017, 18:43:01
mi sorge una domanda spontanea; si può manipolare legalmente a scopo amatoriale cioè senza fini di lucro, una Gif animata?
Non so pronunciarmi, pertanto mi astengo. :-X
A mio avviso va aggiunta alla questione del copyright del formato GIF anche quello dell'eventuale autore del file gif originario.
Credo che questa seconda questione sia il reale problema.


Titolo: Re:Gif e cursori animati
Inserito da: sandro - 17 Settembre 2017, 18:56:36
Va bè, a questo punto è meglio soprassedere e rinunciare a manipolare la Gif per non ledere i diritti di Copyright.
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 17 Settembre 2017, 19:04:25
Va bè, a questo punto è meglio soprassedere e rinunciare a manipolare la Gif per non ledere i diritti di Copyright.
Ma suppongo che questo problema si presenti in via generale per ogni tipo di file già creato da altri.   :-\
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 17 Settembre 2017, 19:13:43
Ok, ci aggiorniamo per altre problematiche :ciao: :ciao: :ciao:
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 17 Settembre 2017, 19:14:22
 :D
Titolo: Re:Gif e cursori animati
Inserito da: Gianluigi - 17 Settembre 2017, 19:21:10
Non sono un avvocato e neanche esperto di gif ma ammesso e non concesso che esistano gif animate libere, e credo proprio di si in quanto esistono programmi open source che le creano, non vedo per quale motivo esse non possano essere manipolate dal tuo programma.
Se poi hai timore che il tuo programma non possa manipolare le gif, vale lo stesso discorso, visto che esistono programmi liberi che le manipolano creandole non vedo perché tu non lo possa fare.

 :ciao: :ciao:
Titolo: Re:Gif e cursori animati
Inserito da: sandro - 17 Settembre 2017, 19:28:29
Ciao Gianluigi,
ti ringrazio del consiglio. :D :D :D
Titolo: Re:Gif e cursori animati
Inserito da: vuott - 20 Marzo 2018, 19:52:25
Volevo sapere se esiste la possibilità di estrarre le informazioni inserte nella gif riguardanti il tempo di intervallo fra un fotogramma e l'altro.
Ci sarebbe anche l'aiuto di alcune funzioni esterne del sistema GLIB-2.0:

http://www.gambas-it.org/wiki/index.php?title=Estrarre_informazioni_da_una_GIF_animata_relative_al_tempo_di_esecuzione_dei_fotogrammi#Estrarre_il_numero_di_millisecondi_per_il_quale_un_fotogramma_viene_mostrato