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
» Logiciel de planétarium.
Conversion d'un fichier binaire en lignes de Datas Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Conversion d'un fichier binaire en lignes de Datas Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Conversion d'un fichier binaire en lignes de Datas Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Conversion d'un fichier binaire en lignes de Datas Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Conversion d'un fichier binaire en lignes de Datas Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Conversion d'un fichier binaire en lignes de Datas Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Conversion d'un fichier binaire en lignes de Datas Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Conversion d'un fichier binaire en lignes de Datas Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Conversion d'un fichier binaire en lignes de Datas Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Conversion d'un fichier binaire en lignes de Datas Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Conversion d'un fichier binaire en lignes de Datas Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Conversion d'un fichier binaire en lignes de Datas Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Conversion d'un fichier binaire en lignes de Datas Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Conversion d'un fichier binaire en lignes de Datas Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Conversion d'un fichier binaire en lignes de Datas Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

 

 Conversion d'un fichier binaire en lignes de Datas

Aller en bas 
AuteurMessage
JL35




Nombre de messages : 7112
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 : 7112
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 : 7112
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 : 7112
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.
» Ecriture dans un fichier binaire
» Recherche d'une suite de valeurs dans un 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: