Ir al contenido


Foto

Sobre las dos implementaciones de un visor Gif TGifViewer


  • Por favor identifícate para responder
1 respuesta en este tema

#1 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.955 mensajes
  • LocationMadrid - España

Escrito 10 enero 2020 - 07:09

Quisiera en este hilo aunar las dos implementaciones que he publicado en el foro de TGifViewer para dejas claras las similitudes y grandes diferencias. En el foro he publicado el hilo principal de TGifViewer y otro llamado New GifViewer que no es un componente VCL pero se encapsula en una clase:
TGifViewer un visor versátil de animaciones Gif
New GifViewer, versión GDI+ polivalente
Cometí la torpeza de llamarlos a ambos TGifViewer, y digo torpeza porque parece que doy a entender que ambos son la misma cosa o derivado uno de otro, cuando en realidad no tienen nada que ver salvo que visualizan animaciones gif.
 
El primero está basado en la clase TGif, una clase especializada en leer archivos gif, decompilarlos y servir los fotogramas al visor. Esta clase no usa la API de Windows en su zona más baja con lo que puede tener portabilidad a otros S.O.
 
El segundo se basa en el GDI+ de Windows, permite ejecutables algo más pequeños pero no es portable.
 
GDI+ trabaja excelentemente con los gif pero no es compatible con todos ellos. En concreto para el DisponsalMethod tipo 2 y 3. Estos métodos se especifican en el fotograma Gif e indica al visor que tiene que hacer cuando se termina la visualización del mismo.
0 – Sin especificar, el decodificador no hará acciones tras terminar la visualización de la imagen.
1 – Sin acción, la imagen no se elimina
2 – Se restaura el color de fondo
3 – Se restaura la imagen previa.
 
GDI plus y algunos visores modernos no implementan bien los modos 2 y 3.

 

Veamos un ejemplo de visualización en DisponsalMethod tipo 2
6639e4794651b73c395b3cdc3ea63acao.gifea69c34749fab1006b28b1fdec33d86ao.gif
 

 

 

Ahora veamos un Gif con DisponsalMethod tipo 3

 

9ac812318afceaacfa8e5075db71c8b5o.gifcf312bef4b34c4ad61508caf4e6a196co.gif

 

Queda claro que GDI no se comporta bien con estos tipos de gif de DisponsalMethod tipo 2 y 3.
 
Esta es una de las poderosas razones que me inclinaron a insistir en mi clase TGif y el componente TGifViewer. He ido actualizando el tema para ser todo lo compatible con Gif antiguos y modernos.
 
Si alguno quiere experimentar con los DisponsalMethods puede hacerlo con GifCreator  que está también basado en la case TGif.
 
 
 
Saludos.


  • 1

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.156 mensajes
  • LocationMéxico

Escrito 13 enero 2020 - 04:05

Excelente explicación amigo escafandra (y)

 

Saludos


  • 0