FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Conversion d'un fichier binaire en lignes de Datas Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Conversion d'un fichier binaire en lignes de Datas Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Conversion d'un fichier binaire en lignes de Datas Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Conversion d'un fichier binaire en lignes de Datas Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Conversion d'un fichier binaire en lignes de Datas Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Conversion d'un fichier binaire en lignes de Datas Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Conversion d'un fichier binaire en lignes de Datas Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Conversion d'un fichier binaire en lignes de Datas Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Conversion d'un fichier binaire en lignes de Datas Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Conversion d'un fichier binaire en lignes de Datas Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Conversion d'un fichier binaire en lignes de Datas Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Conversion d'un fichier binaire en lignes de Datas Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Conversion d'un fichier binaire en lignes de Datas Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Conversion d'un fichier binaire en lignes de Datas Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Conversion d'un fichier binaire en lignes de Datas Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

 

 Conversion d'un fichier binaire en lignes de Datas

Aller en bas 
AuteurMessage
JL35




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

Conversion d'un fichier binaire en lignes de Datas Empty
MessageSujet: Conversion d'un fichier binaire en lignes de Datas   Conversion d'un fichier binaire en lignes de Datas EmptyVen 12 Fév 2010 - 17:39

Le but était d'intégrer une (petite) image dans un programme de façon à ne pas avoir de fichier joint. Ce n'est évidemment valable que pour de toutes petites images, genre icônes (bien que dans le principe on peut faire n'importe quelle longueur).
Les octets binaires lus dans le fichier d'origine sont écrits sous forme hexadécimale dans les lignes de datas, enregistrées dans un fichier type texte.
Pour l'utilisation, il faut ensuite copier/coller le contenu de ce fichier dans le source Panoramic concerné. Puis lire les lignes de data et les décoder en binaire dans un fichier qui deviendra l'image à lire (identique au fichier d'origine).
Le programme ci-dessous est en deux parties:
1) l'encodage du fichier binaire en datas dans un fichier ascii.
2) le décodage de ces datas dans un fichier binaire, pour vérification.

Remarque: ces opérations sont très longues, Panoramic n'est pas adapté au travail sur des fichiers binaires, du fait d'être obligé d'opérer octet par octet.
A titre d'exemple, mon image d'origine fait 78000 octets l'encodage dure 45 secondes, et le décodage 25 secondes (par comparaison, la même chose en FreeBasic est quasiment instantanée, on lit le fichier binaire en une seule fois dans une chaîne et tout se fait en mémoire).

Comme d'habitude, il faut changer les noms de fichiers en fonction de son environnement.

Et voici le (court) programme:
Code:
' Fic2Dat.bas encodage d'un fichier binaire en lignes de datas
' Editer le résultat (fr$) et copier/coller les datas dans le source Panoramic
dim f$, fr$, fn$, a$, b$, q$, h$, i, t, d, ldat%, lli%
label Dec2Hex

f$ = "C:\Graph\Bmp\tst320.bmp": ' *** à modifier
fr$ = "Z:\fpano.dat":                    ' *** à modifier

ldat% = 36: ' nb d'octets binaires par ligne de data (modulable)
lli% = 2*ldat% + 6: ' longueur maxi de la ligne de data
q$ = CHR$(34)

' Encodage du fichier f$ en lignes de datas (dans fichier ascii fr$)
FileBin_Open_Read 1, f$: File_Open_Write 2, fr$
t = FileBin_Size(1)
b$ = "DATA " + q$
for i = 1 to t
    FileBin_Read 1, d: Gosub Dec2Hex
    b$ = b$ + h$
    if len(b$) >= lli% THEN File_WriteLn 2, b$ + q$: b$ = "DATA " + q$
next i
if len(b$) > 6 then File_WriteLn 2, b$ + q$
FileBin_Close 1: File_Close 2
Print "Encodage terminé !"
END

Dec2Hex:
' conversion décimal/hexa de l'octet d, résultat h$ sur 2 caractères
h$=""
REPEAT
  h$ = MID$("0123456789ABCDEF", 1+16*FRAC(d/16), 1) + h$
  d = INT(d/16)
UNTIL d <= 0
IF LEN(h$) < 2 THEN h$ = "0" + h$
RETURN


Dernière édition par JL35 le Ven 12 Fév 2010 - 23:21, édité 2 fois
Revenir en haut Aller en bas
JL35




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

Conversion d'un fichier binaire en lignes de Datas Empty
MessageSujet: Re: Conversion d'un fichier binaire en lignes de Datas   Conversion d'un fichier binaire en lignes de Datas EmptyVen 12 Fév 2010 - 18:31

Un exemple d'une petite image jpg:
Code:
DATA "FFD8FFE000104A46494600010100000100010000FFDB0043000604050605040606050607"
DATA "0706080A100A0A09090A140E0F0C1017141818171416161A1D251F1A1B231C1616202C20"
DATA "232627292A29191F2D302D283025282928FFDB0043010707070A080A130A0A13281A161A"
DATA "282828282828282828282828282828282828282828282828282828282828282828282828"
DATA "2828282828282828282828282828FFC0001108002A001B03012200021101031101FFC400"
DATA "190000030101010000000000000000000000050708040603FFC4002B1000020202010302"
DATA "050403000000000000010203040511060012130721141522313216233341425161FFC400"
DATA "1801000301010000000000000000000000000002050304FFC40022110001040104020300"
DATA "0000000000000000010002031104051231512171416181FFDA000C03010002110311003F"
DATA "007AF28BFC86BF29821C5A593078626A90A560F5EDCA5DC4EB665ED260548C46CAC0A9DB"
DATA "3696723C5D21723CE79D70FF0052725366322B7EF559145BC7C361CD1951E34904712B01"
DATA "E3D2B200FAEE0C0F71705BBE94E47C8061A4A30438EBB94BD71D962A948C5E4EC5525E43"
DATA "E474508BF4A9627F29107DD8753863FD11E79353867BF36105C9944B3FC45E95A53237BB"
DATA "17611302FB27643104ECECFDFACE4BAF0AD6887084AE19C698457049BFAAE2953F8ABF5B"
DATA "2B8BA791A127969DB852C4327695EF4750CA744023608F6237D6AE943E9257CD7A7B44F1"
DATA "EE59467305BC99157255A78E4A31092242B1ED99644EE94381B8C032480024B8DB7BA70A"
DATA "448D6B5E430D8EFB4AAF58B97D0A5770986A8324B9E9B250D7A592A9007831B6A51E31E5"
DATA "67050B986691BC5A2C54EFE8EE49061FD0307C6725965C171DC819D11F19632A26BD61A5"
DATA "F176B7C4C93176EC0CA80043ECA0FF007D69F557894F5E8F29E455ECC4D5931F7325E299"
DATA "4B341756A471C7343FD2BA8AF19493F28FF740EEF3031168F80706E43163B2782A982F97"
DATA "A397DE3E8519A0B60300559DA273A05597E8653EEDEFB0351756D3B2334B4452EC039157"
DATA "66C1EC755E894D1BC3790B88866ABE9E72AE175B2F16732096EA88EB63F1B2D8BD0D2B70"
DATA "A149268E3919A531F86C4802A7E2A9B28E7B4C6F6A9660B9561B35268E7AD322C914B130"
DATA "649108D86523D88208208E93F1E031792E7598A9C10E02A4B874C74A1AAC4BAA93F9ED09"
DATA "D4788828ECB1C2B22FB19234F1129DC1D1ABC7B150607018CC453795EB63EAC552269482"
DATA "EC91A050588006F406F4075470A192181B1CCFDEE1F3DF9FDF491E413617B65B2157118A"
DATA "BB92C84BE1A54E17B13C9DA5BB23452CC740127401F6037D4F5C9389356E41CDE7CB5597"
DATA "176799D58C62AA50C8CB1A412978AA9371622A8E5A6BB13B01E55FE6D16FF3A3FA0B8DE2"
DATA "7C731756ED5C6603114EB5E4F1DA8ABD28E34B09A23B64014061A661A3BFB9FF007D7525"
DATA "417D2B83E45C729F11B956B54CAE16940274AA7BA1995FB80B08DDABBEF78E52C18060EA"
DATA "FBD82AEFDA743F0984C5606ABD5C1E328E36B3B991A2A75D214672002C428037A006FF00"
DATA "E0E8874217FFD9"
DATA "X"
dim fn$, h$, d, i, b$
Label rr, Hex2Dec

fn$ = "Z:\image.jpg": ' fichier résultat (à modifier)

FileBin_Open_Write 2, fn$
rr:
READ b$
if b$ <> "X"
    for i = 1 to len(b$) step 2
        h$ = MID$(b$, i, 2): GOSUB Hex2Dec
        FileBin_Write 2, d
    Next i
    GOTO rr
END_IF
FileBin_Close 2
Picture 1
File_Load 1, fn$: ' stretch_on 1

End

Hex2Dec:
' conversion hexa/décimal de h$ (2 caractères), résultat dans d
h$ = UPPER$(h$): ' à tout hasard
d = 16 * (INSTR("0123456789ABCDEF", LEFT$(h$, 1)) - 1)
d = d + INSTR("0123456789ABCDEF", RIGHT$(h$, 1)) - 1
RETURN

Ne pas oublier de mettre une butée à la fin des datas (ici "X").


Dernière édition par JL35 le Dim 14 Fév 2010 - 16:57, édité 1 fois
Revenir en haut Aller en bas
Invité
Invité




Conversion d'un fichier binaire en lignes de Datas Empty
MessageSujet: Re: Conversion d'un fichier binaire en lignes de Datas   Conversion d'un fichier binaire en lignes de Datas EmptyVen 12 Fév 2010 - 19:13

Oui j'ai essayer le 2e code qui donne un chien mais le premier je met les noms de fichiers correctement et après ......
Revenir en haut Aller en bas
JL35




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

Conversion d'un fichier binaire en lignes de Datas Empty
MessageSujet: Re: Conversion d'un fichier binaire en lignes de Datas   Conversion d'un fichier binaire en lignes de Datas EmptyVen 12 Fév 2010 - 20:54

As-tu attendu suffisamment longtemps ? si ton fichier source est un peu trop gros c'est très long (chez moi 80k -> 45 secondes d'encodage), il faudrait sans doute rajouter une barre de progression.
Revenir en haut Aller en bas
Invité
Invité




Conversion d'un fichier binaire en lignes de Datas Empty
MessageSujet: Re: Conversion d'un fichier binaire en lignes de Datas   Conversion d'un fichier binaire en lignes de Datas EmptyVen 12 Fév 2010 - 22:34

Mon fichier avait 4k

Ouais et après j'attend là ça fait Encodage terminé ! et après Décodage terminé ! mais après ...


Dernière édition par Nicolas le Sam 13 Fév 2010 - 21:37, édité 1 fois
Revenir en haut Aller en bas
JL35




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

Conversion d'un fichier binaire en lignes de Datas Empty
MessageSujet: Re: Conversion d'un fichier binaire en lignes de Datas   Conversion d'un fichier binaire en lignes de Datas EmptyVen 12 Fév 2010 - 23:08

Eh bien, après, comme j'ai dit, tu as dans le fichier fr$ la liste des lignes data.
il faut lire le fichier dans un éditeur de texte, sélectionner tout, copier, puis coller le tout dans ton programme panoramic (par exemple dans l'exemple que j'ai donné ensuite, à la place de mes propres datas).
Ou bien prendre le fichier fr$ comme nouveau fichier source panoramic, et coder le reste derrière, après les datas.

Je précise que dans le 1er listing le décodage ne sert à rien, c'était juste une vérification pour voir, en fait il faut supprimer tout ce qui est après "encodage terminé", et le sous-programme Hex2Dec, et ignorer aussi le fichier fn$.

Bon, du coup j'ai édité le 1er listing et j'ai supprimé les choses inutiles pour ne pas troubler les esprits.

Et j'ai également édité le 2ème listing, pour y mettre une image jpg (et non bmp), bien plus courte.
On a intérêt, en effet, à utiliser dans ce cas le format jpg, bien plus compact, et pour des petites images, comme des icônes, la qualité n'est pas très importante (on ne voit pas la différence).
Evidemment, le fichier d'origine et le fichier résultat doivent être au même format (bmp, ou mieux jpg), sinon ça ne marche pas.

Je rajoute que l'inconvénient d'une image jpg c'est qu'on n'a pas accès facilement à ses dimensions en pixels (largeur x hauteur), contrairement à une image bmp.
Et aussi que ce fichier binaire peut être n'importe quoi, y compris par exemple un exécutable à transporter, mais alors gare à la longueur ! on voit bien qu'avec ce procédé, un octet binaire exprimé en hexadécimal occupe deux octets.
Revenir en haut Aller en bas
Contenu sponsorisé





Conversion d'un fichier binaire en lignes de Datas Empty
MessageSujet: Re: Conversion d'un fichier binaire en lignes de Datas   Conversion d'un fichier binaire en lignes de Datas Empty

Revenir en haut Aller en bas
 
Conversion d'un fichier binaire en lignes de Datas
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Fichier <-> Datas
» Conversion des bases : binaire, octal, decimal, héxadécimal
» Problème de fichier binaire.
» Recherche d'une suite de valeurs dans un fichier binaire
» Commandes pour fichier binaire

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