FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Problème de compilateur.
par Pedro Alvarez Hier à 20:01

» COMPILATEUR V 0.9 beta 8 du 18 aout 2017
par Pedro Alvarez Hier à 19:54

» Pb 17 (en analyse): ITEM_SELECT ne fonctionne pas
par Jack Jeu 17 Aoû 2017 - 19:26

» Compilateur FBPano
par Mike Jeu 17 Aoû 2017 - 13:52

» un nouveau editeur panobasic
par Jean Claude Jeu 17 Aoû 2017 - 10:18

» Le compilateur.
par Pedro Alvarez Jeu 17 Aoû 2017 - 8:36

» Pb 16 (en analyse): ON_CLOSE plante à l'exécution
par Jack Mer 16 Aoû 2017 - 20:00

» Pb 15 (en analyse): TIMER_ON plante à l'exécution
par Jack Mer 16 Aoû 2017 - 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

» Carte de France des régions
par Yannick Sam 12 Aoû 2017 - 21:33

» Pb 14 (en analyse): PRINT_LOCATE plante à l'exécution
par Jack Ven 11 Aoû 2017 - 22:37

» Petit avertissement [Mots réservés]
par papydall Ven 11 Aoû 2017 - 13:45

» Distances sur plan
par JL35 Jeu 10 Aoû 2017 - 21:29

» Tracé : Triangle, Carrée, Dents de scie, Sinusoïde redressée
par papydall Jeu 10 Aoû 2017 - 14:52

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Structure des fichiers BMP/JPG/ICO

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Structure des fichiers BMP/JPG/ICO   Mar 11 Oct 2016 - 23:29

Pour qui voudrait s'intéresser à la structure d'un fichier image au format bmp, une petite sub qui dumpe le fichier et en détaille la structure (tout est en hexadécimal).
En gros il y a une partie en-tête et une partie données qui détaille chaque pixel de l'image.
L'en-tête donne les caractéristiques de l'image (format, taille, bits par pixel, etc.)
La description des pixels est organisée de la façon suivante:
- 3 ou 4 octets par pixel donnant sa couleur sous la forme B, G, R et éventuellement un octet supplémentaire.
Les pixels sont décrits de bas en haut de l'image, et de gauche à droite. (les premiers octets de description correspondent au bas à gauche de l'image).

La sub ne dumpe que le début du fichier qui peut être très long, on pourrait évidemment en rajouter.
Le résultat est renvoyé sous forme de chaîne dans le presse-papier.
Si ça peut amuser quelqu'un:
Code:
DIM f$,b$,i%
f$ = "C:\GRAPH\BMP\PNoel.bmp": ' un fichier bmp quelconque
HEIGHT 0,SCREEN_Y-30: WIDTH 0,450
LIST 1: FULL_SPACE 1: FONT_NAME 1,"Lucida Console"
MEMO 2: HIDE 2: WIDTH 2,450
DumpBmp(f$)
CLIPBOARD_PASTE 2
FOR i% = 1 TO COUNT(2): ITEM_ADD 1,ITEM_READ$(2,i%): NEXT i%
END
' ==============================================================================
SUB DumpBmp(f$,fr$)
  ' Dump d'un fichier image au format bitmap (bmp)
  ' -> Résultat dans fichier texte fr$ (ou clipboard si fr$ = "")
  ' NB: il peut y avoir un pixel supplémentaire (3 ou 4 octets à 00) en bout de
  '    chaque ligne...?
  IF LABEL("dpzb") = 0 THEN LABEL dpzb
  DIM_LOCAL sz%,a$,b$,rc$,i%,j%,nl%,rs%,w%,h%,bpp%,tb%,ad%,sad%,nb%,snb%,tx$,na%,fi%
  rc$ = CHR$(13)+CHR$(10)
  FILEBIN_OPEN_READ 1,f$: sz% = FILEBIN_SIZE(1)
    nl% = INT(sz%/2000): rs% = sz%-nl%*2000: a$ = "": ' lecture limitée à 2000 octets
    IF nl%>0 THEN FOR i% = 1 TO nl%: FILEBIN_HEXA_READ 1,2000,b$: a$ = a$+b$: NEXT i%
    IF rs% > 0 THEN FILEBIN_HEXA_READ 1,rs%,b$: a$ = a$+b$
  FILEBIN_CLOSE 1
  fi% = 0: IF fr$ <> "" THEN FILE_OPEN_WRITE 1,fr$: fi% = 1
  na% = 4: ' nb de chiffres de l'adresse
  IF sz% > 1040000
      na% = 6
  ELSE
      IF sz% > 65500 THEN na% = 5
  END_IF
  w% = HEX(MID$(a$,39,2)+MID$(a$,37,2)): h% = HEX(MID$(a$,47,2)+MID$(a$,45,2))
  bpp% = HEX(MID$(a$,57,2)): ' bits par pixel
  b$ = f$+" ("+STR$(w%)+"x"+STR$(h%)+" pixels, "+STR$(sz%)+" octets)"+rc$+rc$
  b$=b$+" - En-tête : -"+rc$
  ad% = 0: nb% = 2: tx$ = "'BM'": GOSUB dpzb
  ad% = 2: nb% = 4: tx$ = "Taille totale du fichier": GOSUB dpzb
  ad% = 6: nb% = 4: tx$ = "Réservé": GOSUB dpzb
  ad% = 10: nb% = 4: tx$ = "Offset des datas images": GOSUB dpzb
  ad% = 14: nb% = 4: tx$ = "Taille du header": GOSUB dpzb
  ad% = 18: nb% = 4: tx$ = "Largeur image (pixels)": GOSUB dpzb
  ad% = 22: nb% = 4: tx$ = "Hauteur image (pixels)": GOSUB dpzb
  ad% = 26: nb% = 2: tx$ = "Nombre de plans": GOSUB dpzb
  ad% = 28: nb% = 2: tx$ = "Nb de bits par pixel (bpp)": GOSUB dpzb
  ad% = 30: nb% = 4: tx$ = "Type de compression": GOSUB dpzb
  ad% = 34: nb% = 4: tx$ = "Taille de l'image": GOSUB dpzb
  ad% = 38: nb% = 4: tx$ = "Largeur (pixels/m)": GOSUB dpzb
  ad% = 42: nb% = 4: tx$ = "Hauteur (pixels/m)": GOSUB dpzb
  ad% = 46: nb% = 4: tx$ = "Nombre de couleurs": GOSUB dpzb
  ad% = 50: nb% = 4: tx$ = "Couleurs importantes": GOSUB dpzb
  tb% = w%*h%*bpp%/8: ' taille de la zone bitmap
  b$=b$+rc$+" - Datas image ("+STR$(bpp%/8)+" octets/pixel = "+STR$(tb%)+" octets) : -"
  IF fi% = 1
      FILE_WRITELN 1,b$: b$ = ""
  ELSE
      b$ = b$+rc$
  END_IF
  nb% = sz%-54: ' octets restant (bitmap)
  ' Si nb%>tb%, un pixel fictif supplémentaire par ligne = (nb%-tb%)/h% octets à zéro.
  ad% = 54: tx$ = "" : GOSUB dpzb
  IF fi% = 0
    CLIPBOARD_STRING_COPY b$
  ELSE
    FILE_CLOSE 1
  END_IF
  EXIT_SUB
  ' ++++++++++
dpzb:
  ' S/P extraction sous forme de dump d'une zone hexa de a$, d'adresse ad%, nb% octets,
  ' texte tx$ éventuel en commentaire  -> ajouté à la chaîne b$
  sad% = ad%: snb% = nb%
  WHILE nb%>16
      b$ = b$+RIGHT$("00000"+HEX$(ad%),na%)+": "
      FOR i% = ad% TO ad%+15
          b$ = b$+MID$(a$,2*i%+1,2)+" "
      NEXT i%
      IF tx$ <> "" THEN b$ = b$+" "+tx$
      IF fi% = 1
          FILE_WRITELN 1,b$: b$ = ""
      ELSE
          b$ = b$+rc$
      END_IF
      ad% = ad%+16: nb% = nb%-16
  END_WHILE
  IF nb% > 0
      IF nb% = 2 THEN tx$ = "      "+tx$
      b$ = b$+RIGHT$("00000"+HEX$(ad%),na%)+": "
      FOR i% = ad% TO ad%+nb%-1
          b$ = b$+MID$(a$,2*i%+1,2)+" "
      NEXT i%
      IF tx$ <> "" THEN b$ = b$+" "+tx$
      IF fi% = 1
          FILE_WRITELN 1,b$: b$ = ""
      ELSE
          b$ = b$+rc$
      END_IF
  END_IF
  ad% = sad%: nb% = snb%
RETURN
END_SUB
' ==============================================================================
SUB DumpIco(f$,fr$)
  ' Dump d'un fichier image au format bitmap (ico)
  ' -> Résultat dans fichier texte fr$ (ou clipboard si fr$ = "")
  ' Exemple de structure:
  '  22 octets: header
  '  104 octets: palette (?)
  '  512 octets: bitmap image
  '  128 octets: 1 octet par bit image (?)
  IF LABEL("dpzi") = 0 THEN LABEL dpzi
  DIM_LOCAL sz%,tl%,a$,b$,c$,rc$,i%,j%,w%,h%,bpp%,nl%,rs%,tb%,lp%,ad%,sad%,nb%,snb%
  DIM_LOCAL tx$,na%,fi%
  rc$ = CHR$(13)+CHR$(10)
  FILEBIN_OPEN_READ 1,f$: sz% = FILEBIN_SIZE(1)
    nl% = INT(sz%/2000): rs% = sz%-nl%*2000: a$ = "": ' lecture limitée à 2000 octets
    IF nl%>0 THEN FOR i% = 1 TO nl%: FILEBIN_HEXA_READ 1,2000,b$: a$ = a$+b$: NEXT i%
    IF rs% > 0 THEN FILEBIN_HEXA_READ 1,rs%,b$: a$ = a$+b$
  FILEBIN_CLOSE 1
  fi% = 0: IF fr$ <> "" THEN FILE_OPEN_WRITE 1,fr$: fi% = 1
  na% = 4: ' nb de chiffres de l'adresse
  IF sz% > 1040000
      na% = 6
  ELSE
      IF sz% > 65500 THEN na% = 5
  END_IF
  w% = HEX(MID$(a$,13,2)): h% = HEX(MID$(a$,15,2))
  bpp% = HEX(MID$(a$,25,2))
  b$ = f$+" ("+STR$(w%)+"x"+STR$(h%)+" pixels, "+STR$(sz%)+" octets)"+rc$+rc$
  b$=b$+" - En-tête : -"+rc$
  ad% = 0: nb% = 2: tx$ = "Réservé (=0000)": GOSUB dpzi
  ad% = 2: nb% = 2: tx$ = "=1 icône =2 curseur": GOSUB dpzi
  ad% = 4: nb% = 2: tx$ = "Nombre d'images": GOSUB dpzi
  ad% = 6: nb% = 1: tx$ = "        Largeur (=0 si 256)": GOSUB dpzi
  ad% = 7: nb% = 1: tx$ = "        Hauteur (=0 si 256)": GOSUB dpzi
  ad% = 8: nb% = 1: tx$ = "        Nb de couleurs (=0 si >256)": GOSUB dpzi
  ad% = 9: nb% = 1: tx$ = "        Réservé (=0)": GOSUB dpzi
  ad% = 10: nb% = 2: tx$ = "Nb de plans (0 ou 1)": GOSUB dpzi
  ad% = 12: nb% = 2: tx$ = "Bits par pixel (ou 0)": GOSUB dpzi
  ad% = 14: nb% = 4: tx$ = "Taille datas bitmap": GOSUB dpzi
  ad% = 18: nb% = 4: tx$ = "Offset datas bitmap": GOSUB dpzi
  lp% = HEX(MID$(a$,45,2))
  b$=b$+rc$+" - Palette ? (= "+STR$(lp%)+" octets) : -"+rc$
  ad% = 22: nb% = lp%: tx$ = "": GOSUB dpzi
  tb% = w%*h%*bpp%/8: ' taille des données bitmap de l'image
  b$=b$+rc$+" - Datas image ("+STR$(bpp%/8)+" octets/pixel = "+STR$(tb%)+" octets) : -"+rc$
  ad% = ad%+lp%: nb% = tb%: tx$ = "": GOSUB dpzi
  b$ = b$+rc$+" - Zone "+STR$(sz%-62-tb%)+" octets (= 1 octet pour 6 pixels image ?) -"+rc$
  ad% = ad%+tb%: nb% = sz%-ad%: tx$ = "": GOSUB dpzi
  IF fr$ = ""
    CLIPBOARD_STRING_COPY b$
  ELSE
    FILE_WRITELN 1,b$: FILE_CLOSE 1
  END_IF
  EXIT_SUB
  ' ++++++++++
dpzi:
  ' S/P extraction sous forme de dump d'une zone hexa de a$, d'adresse ad%, nb% octets,
  ' texte tx$ éventuel en commentaire  -> ajouté à la chaîne b$
  sad% = ad%
  WHILE nb%>16
      b$ = b$+RIGHT$("00000"+HEX$(ad%),na%)+": "
      FOR i% = ad% TO ad%+15
          b$ = b$+MID$(a$,2*i%+1,2)+" "
      NEXT i%
      IF tx$ <> "" THEN b$ = b$+" "+tx$
      b$ = b$+rc$
      ad% = ad%+16: nb% = nb%-16
  END_WHILE
  IF nb% > 0
      IF nb% = 2 THEN tx$ = "      "+tx$
      b$ = b$+RIGHT$("00000"+HEX$(ad%),na%)+": "
      FOR i% = ad% TO ad%+nb%-1
          b$ = b$+MID$(a$,2*i%+1,2)+" "
      NEXT i%
      IF tx$ <> "" THEN b$ = b$+" "+tx$
      b$ = b$+rc$
  END_IF
  ad% = sad%
RETURN
END_SUB
' ==============================================================================
SUB DumpJpg(f$,fr$)
  ' Dump d'un fichier image au format jpg
  ' -> Résultat dans fichier texte fr$ (ou clipboard si fr$ = "")
  ' Structure détaillée:
  '          http://dev.exiv2.org/projects/exiv2/wiki/The_Metadata_in_JPEG_files
  DIM_LOCAL sz%,tl%,a$,b$,c$,d$,rc$,i%,j%,w%,h%,bpp%,nl%,rs%,tb%,lf%,sf%,ad%,sad%
  DIM_LOCAL nb%,snb%,tx$,na%,fi%
  IF LABEL("dpzj") = 0 THEN LABEL dpzj
  rc$ = CHR$(13)+CHR$(10)
  FILEBIN_OPEN_READ 1,f$: sz% = FILEBIN_SIZE(1)
    nl% = INT(sz%/2000): rs% = sz%-nl%*2000: a$ = "": ' lecture limitée à 2000 octets
    IF nl%>0 THEN FOR i% = 1 TO nl%: FILEBIN_HEXA_READ 1,2000,b$: a$ = a$+b$: NEXT i%
    IF rs% > 0 THEN FILEBIN_HEXA_READ 1,rs%,b$: a$ = a$+b$
  FILEBIN_CLOSE 1
  fi% = 0: IF fr$ <> "" THEN FILE_OPEN_WRITE 1,fr$: fi% = 1
  na% = 4: ' nb de chiffres de l'adresse
  IF sz% > 1040000
      na% = 6
  ELSE
      IF sz% > 65500 THEN na% = 5
  END_IF
  b$ = f$+" ("+STR$(sz%)+" octets)"+rc$+rc$
  b$=b$+" - En-tête : -"+rc$
  ad% = 0: nb% = 2: tx$ = "Start Of Image": GOSUB dpzj
  ad% = ad%+nb%
  c$ = MID$(a$,ad%*2+1,2)+MID$(a$,ad%*2+3,2)
  WHILE LEFT$(c$,2) = "FF": ' Start Of Frame
    d$ = ""
    IF RIGHT$(c$,2) = "C0": ' Frame de dimensions
        h% = 256*HEX(MID$(a$,ad%*2+11,2))+HEX(MID$(a$,ad%*2+13,2))
        w% = 256*HEX(MID$(a$,ad%*2+15,2))+HEX(MID$(a$,ad%*2+17,2))
        d$ = " (image="+STR$(w%)+"x"+STR$(h%)+" pixels)"
    ELSE
        IF RIGHT$(c$,2) = "E1" THEN d$ = " (Exifs)"
    END_IF
    nb% = 2: tx$ = "Start Of Frame"+d$: GOSUB dpzj
    ad% = ad%+2
    i% = ad%*2+1: lf% = HEX(MID$(a$,i%,2))*256+HEX(MID$(a$,i%+2,2)): ' longueur de frame
    nb% = lf%: tx$ = "": GOSUB dpzj
    ad% = ad%+nb%
    c$ = MID$(a$,ad%*2+1,2)+MID$(a$,ad%*2+3,2)
  END_WHILE
  b$=b$+" - Datas : -"
  IF fi% = 1
      FILE_WRITELN 1,b$: b$ = ""
  ELSE
      b$ = b$+rc$
  END_IF
  nb% = sz%-ad%: tx$ = "": GOSUB dpzj
  IF fi% = 0
    CLIPBOARD_STRING_COPY b$
  ELSE
    FILE_CLOSE 1
  END_IF
  EXIT_SUB
  ' ++++++++++
dpzj:
  ' S/P extraction sous forme de dump d'une zone hexa de a$, d'adresse ad%, nb% octets,
  ' texte tx$ éventuel en commentaire  -> ajouté à la chaîne b$
  sad% = ad%: snb% = nb%
  WHILE nb%>16
      b$ = b$+RIGHT$("00000"+HEX$(ad%),na%)+": ": item_add 1,RIGHT$("0000"+HEX$(ad%),5)+": "
      FOR i% = ad% TO ad%+15
          b$ = b$+MID$(a$,2*i%+1,2)+" "
      NEXT i%
      IF tx$ <> "" THEN b$ = b$+" "+tx$
      IF fi% = 1
          FILE_WRITELN 1,b$: b$ = ""
      ELSE
          b$ = b$+rc$
      END_IF
      ad% = ad%+16: nb% = nb%-16
  END_WHILE
  IF nb% > 0: ' reste
      IF nb% = 2 THEN tx$ = "      "+tx$
      b$ = b$+RIGHT$("00000"+HEX$(ad%),na%)+": "
      FOR i% = ad% TO ad%+nb%-1
          b$ = b$+MID$(a$,2*i%+1,2)+" "
      NEXT i%
      IF tx$ <> "" THEN b$ = b$+" "+tx$
      IF fi% = 1
          FILE_WRITELN 1,b$: b$ = ""
      ELSE
          b$ = b$+rc$
      END_IF
  END_IF
  ad% = sad%: nb% = snb%
RETURN
END_SUB
' ==============================================================================
Je voudrais faire la même chose avec les fichiers ICO, mais là c'est un peu plus coton... scratch

12/10 ajouté la sub DumpIco() pour les fichiers .ico
15/10 ajouté la sub DumpJpg() pour les images .jpg
16/10 possibilité du résultat dans un fichier au lieu du presse-papier


Dernière édition par JL35 le Dim 16 Oct 2016 - 21:18, édité 6 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5508
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Mer 12 Oct 2016 - 1:06

Bravo JL35.

C’est toujours intéressant de connaitre ça

Pour faire le connaisseur  tongue
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Mer 12 Oct 2016 - 8:22

intéressant. Merci JL35 !

Il faut que je prenne le temps de regarder en détail. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Mer 12 Oct 2016 - 17:07

bonjour papydall,

Dans la sub on a aussi directement la taille totale avec sz%: STR$(sz%).

Remarque importante: j'ai oublié de préciser que dans le fichier bmp, les données numériques sont écrites en 'little endian', c'est à dire les poids faibles en tête.

Par exemple, une valeur sur 2 octets, en hexadécimal:
D3 01 = 01D3 (= 467 en décimal)
Une valeur sur 4 octets:
2C 1B 0A 00 = 0A1B2C (= 662316 en décimal)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5508
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Mer 12 Oct 2016 - 17:26

JL35 a écrit:
Remarque importante: j'ai oublié de préciser que dans le fichier bmp, les données numériques sont écrites en 'little endian', c'est à dire les poids faibles en tête.

C’est ce que j’ai précisé dans mon SPOILER Pour faire le connaisseur

Mais comme tout le monde n’est pas aussi connaisseur que Papydall, …  tongue HiHiHi
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Mer 12 Oct 2016 - 17:34

Dont acte papydall, tu as bien précisé dans 'Pour faire le connaisseur' que tous les octets codant la taille sont inversés.

Et moi, Pour faire le malin, je précise que TOUTES les données enregistrés dans l'en-tête, sur 2 ou 4 octets sont en ordre inverse ! en little endian, pour rappeler des souvenirs aux vieux programmeurs en assembleur.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5508
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Mer 12 Oct 2016 - 17:58

J’ai flirté avec le Litte-endian, le Big-endian en passant par le Middle-endian, sans oublier le Bi-endian qu’on appelait bytesexual. Basketball


A malin, malin et demi! 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Mer 12 Oct 2016 - 19:06

Bon et bien moi entre le Litte-endian, le Big-endian et le Middle-endian je suis à l'ouest...

Eh au fait ça se trouve ou le Middle-endian Question Exclamation

Bon ok je sort...

lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Mer 12 Oct 2016 - 21:07

L'indien c'est papydall, attention à ses flèches qui peuvent être acérées !

Ceci dit, j'ai modifié légèrement la sub DumpBmp() et ajouté une sub DumpIco() pour les fichiers images .ico.
C'est un format assez complexe, et ce qui n'arrange rien c'est qu'il peut y avoir plusieurs images icônes dans le même fichier !
Et je n'ai pas (encore ?) trouvé la signification de certaines zones.
Alors le dump est assez rustique, pour des icônes simples, et il y a sûrement des cas où le résultat serait à prendre avec circonspection.
J'ai bien trouvé ça: http://www.gladir.com/LEXIQUE/FICHIERS/ico.htm mais ce n'est pas très clair quand même pour ma petite tête...

Pour les deux dumps je traite maintenant l'intégralité du fichier (qui tient donc dans une seule chaîne sous forme hexa), donc c'est fait pour des imagettes genre icônes, plus gros ça risquerait de faire exploser la machine.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Sam 15 Oct 2016 - 18:20

Je viens d'ajouter le dump des fichiers images au format jpg.
Je répète que c'est pour de petits fichiers images (quelques milliers d'octets), au-delà ça peut marcher encore mais le temps d'exécution devient vite assez long.
Et dans ce cas il faudrait modifier les subs pour renvoyer le résultat dans un fichier texte par exemple, plutôt que dans le presse-papier.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1594
Date d'inscription : 13/09/2009

MessageSujet: +++   Dim 16 Oct 2016 - 19:10

Ouh, encore du grand JL35, ça !
Et ça devient de plus en plus ample.
(bientôt, il va d'ailleurs nous
rajouter les musiques, les vidéos...)
Laughing alien Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   Dim 16 Oct 2016 - 21:24

Tiens jj, content de te voir, ça va ?

Pour les musiques et vidéos, là c'est un peu plus duraille, et je ne suis pas sûr que ça intéresse grand monde ! On a déjà parlé du format mp3 quelque part (avec ygeronimi ?), je ne sais plus trop où...

Sinon là-haut j'ai ajouté la possibilité de récupérer le résultat du dump dans un fichier texte, en effet, dès que le fichier image est un peu grand ça devient rédhibitoire par le presse-papier.
Le résultat du dump en hexa est environ 3,5 fois plus volumineux que le fichier source lui-même.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Structure des fichiers BMP/JPG/ICO   

Revenir en haut Aller en bas
 
Structure des fichiers BMP/JPG/ICO
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Structure des fichiers BMP/JPG/ICO
» Hébergement gratuit images photos fichiers
» [Résolu] OE6 : restaurer fichiers .dbx supprimés
» [Résolu] classement des fichiers et dossiers
» La structure binaire d'un .bmp

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: