Bueno, hace tiempo que estaba buscando cómo era por dentro un archivo .DFG y no encontré nada por la web que lo explicase, sólo un programa en No puedes ver enlaces como invitado. Regístrate o conectate para verlo. que convertía directamente un bmp a un dfg.
[Nota]Al final del post pongo la dirección de descarga de un visor de archivos BIGFOTO y adjunto las sources del programa.
Así que en un arrebato vacacional lo he sacado.
Esto lo he probado con los dfg de los MINIESC. Aviso que es una explicación para programadores.
En los miniesc hay una cadena de 8 bytes de inicio iguales en todos los archivos:
init[8]={1,0x30,0,0x40,0,4,0,0};
Por tanto, para una lectura de las imágenes, estos 8 primeros bytes hay que pasar de ellos.
Los miniescudos tienen un tamaño de 48x64 pixels y 16 colores.
Cada fila se corresponden a 24 bytes de lectura continuados.
Se separan 4 arrays de 6bytes de esa fila en orden, quedando por ejemplo en binario:
a=[10101010 10101010 10101010 10101010 10101010 10101010 ]
b=[01010101 01010101 01010101 01010101 01010101 01010101 ]
c=[00110011 00110011 00110011 00110011 00110011 00110011 ]
d=[11001100 11001100 11001100 11001100 11001100 11001100 ]
Bien pues ahora queremos saber el índice de color del pixel (0,0)
Pues en los bytes a[0] b[0] c[0] d[0] se coge el bit más a la izquierda, quedando b1001=09h=9d
Cada número corresponde a un color de la paleta elegida al crear una imagen, no superando por tanto el índice 15d=0Fh.
Se debe notar que 6bytes*8bits=48pixels y 4bit=2^4=16
Si quisieramos saber el color del pixel (1,0) cogeríamos la siguiente columna binaria y a mamar.
Y si quisieramos el pixel (0,1) deberíamos leer una fila completa.
La paleta que tengo por lo pronto es la siguiente. Aunque habría que ordenarla y en un primer vistazo parece que cambia algún color según se lea un escudo de primera o de segunda u otro (por comprobar).
índice 0: (qRgb(0,0,0));//negro
índice 1: (qRgb(152,96,36));
indice 2:...(qRgb(88,36,0));
(qRgb(216,144,36));//marron
(qRgb(244,216,24));
(qRgb(0,16,224));
(qRgb(244,0,0));
(qRgb(24,108,20));
(qRgb(164,180,200));
(qRgb(132,168,28));
(qRgb(252,212,132));
(qRgb(96,140,180));
(qRgb(104,104,104));//gris
(qRgb(152,152,152)); //otro gris
(qRgb(196,196,196));//gris
(qRgb(255,255,255));//blanco
Y para acabar, el último byte del fichero es un 0xFF
En total el archivo debe ocupar 1545 bytes
Bueno, nada más, que quede esto para la posteridad.
Un saludo.
PD: He programado una aplicación para visionar los BIGFOTO.
El compilado para windows:
No puedes ver enlaces como invitado. Regístrate o conectate para verlo.
Adjunto pongo las sources
[Nota]Al final del post pongo la dirección de descarga de un visor de archivos BIGFOTO y adjunto las sources del programa.
Así que en un arrebato vacacional lo he sacado.
Esto lo he probado con los dfg de los MINIESC. Aviso que es una explicación para programadores.
En los miniesc hay una cadena de 8 bytes de inicio iguales en todos los archivos:
init[8]={1,0x30,0,0x40,0,4,0,0};
Por tanto, para una lectura de las imágenes, estos 8 primeros bytes hay que pasar de ellos.
Los miniescudos tienen un tamaño de 48x64 pixels y 16 colores.
Cada fila se corresponden a 24 bytes de lectura continuados.
Se separan 4 arrays de 6bytes de esa fila en orden, quedando por ejemplo en binario:
a=[10101010 10101010 10101010 10101010 10101010 10101010 ]
b=[01010101 01010101 01010101 01010101 01010101 01010101 ]
c=[00110011 00110011 00110011 00110011 00110011 00110011 ]
d=[11001100 11001100 11001100 11001100 11001100 11001100 ]
Bien pues ahora queremos saber el índice de color del pixel (0,0)
Pues en los bytes a[0] b[0] c[0] d[0] se coge el bit más a la izquierda, quedando b1001=09h=9d
Cada número corresponde a un color de la paleta elegida al crear una imagen, no superando por tanto el índice 15d=0Fh.
Se debe notar que 6bytes*8bits=48pixels y 4bit=2^4=16
Si quisieramos saber el color del pixel (1,0) cogeríamos la siguiente columna binaria y a mamar.
Y si quisieramos el pixel (0,1) deberíamos leer una fila completa.
La paleta que tengo por lo pronto es la siguiente. Aunque habría que ordenarla y en un primer vistazo parece que cambia algún color según se lea un escudo de primera o de segunda u otro (por comprobar).
índice 0: (qRgb(0,0,0));//negro
índice 1: (qRgb(152,96,36));
indice 2:...(qRgb(88,36,0));
(qRgb(216,144,36));//marron
(qRgb(244,216,24));
(qRgb(0,16,224));
(qRgb(244,0,0));
(qRgb(24,108,20));
(qRgb(164,180,200));
(qRgb(132,168,28));
(qRgb(252,212,132));
(qRgb(96,140,180));
(qRgb(104,104,104));//gris
(qRgb(152,152,152)); //otro gris
(qRgb(196,196,196));//gris
(qRgb(255,255,255));//blanco
Y para acabar, el último byte del fichero es un 0xFF
En total el archivo debe ocupar 1545 bytes
Bueno, nada más, que quede esto para la posteridad.
Un saludo.
PD: He programado una aplicación para visionar los BIGFOTO.
El compilado para windows:
No puedes ver enlaces como invitado. Regístrate o conectate para verlo.
Adjunto pongo las sources