IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Lire/afficher un fichier image PGM binaire


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 210
    Points : 91
    Points
    91
    Par défaut Lire/afficher un fichier image PGM binaire
    Bonjour à tous,

    Pour afficher le texte d'une image PGM codé en ASCII, il suffit d'utiliser la commande CAT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    seb@debian:/tmp/seb/deux$ cat ladeux-000000331b.pgm                             
    P2
    9 8
    255
    141 139 141 93 21 33 56 114 141
    37 21 72 97 68 46 49 83 92
    16 24 65 87 116 101 58 68 60
    74 86 64 76 117 116 71 26 73
    93 79 38 66 79 76 48 22 43
    100 56 18 27 78 53 18 19 0
    98 34 7 24 107 40 18 10 27
    103 78 34 35 107 29 18 17 75
    Par contre, lorsque l'image est codée en binaire, je ne sais pas quel commande utiliser afin d'afficher le code en ASCII
    Si j'utilise CAT, HD, HEXDUMP, je n'arrive.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    seb@debian:/tmp/seb/deux$ cat ladeux-000000331.pgm
    P5
    9 8
    255
    ▒▒▒]!8r▒%HaD.1S\AWte:D<JV@LutGI]O&BOL0+d85b"k(
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    seb@debian:/tmp/seb/deux$ hd ladeux-000000331.pgm
    00000000  50 35 0a 39 20 38 0a 32  35 35 0a 8d 8b 8d 5d 15  |P5.9 8.255....].|
    00000010  21 38 72 8d 25 15 48 61  44 2e 31 53 5c 10 18 41  |!8r.%.HaD.1S\..A|
    00000020  57 74 65 3a 44 3c 4a 56  40 4c 75 74 47 1a 49 5d  |Wte:D<JV@LutG.I]|
    00000030  4f 26 42 4f 4c 30 16 2b  64 38 12 1b 4e 35 12 13  |O&BOL0.+d8..N5..|
    00000040  00 62 22 07 18 6b 28 12  0a 1b 67 4e 22 23 6b 1d  |.b"..k(...gN"#k.|
    00000050  12 11 4b                                          |..K|
    00000053
    En résumer j'aimerai "traduire" et afficher un fichier binaire (sans passer par ImageMagick afin de transformer le fichier binaire en ascii).

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 386
    Points
    19 386
    Par défaut
    bon, la question à 100.000 : pour quoi faire ?
    pourquoi pas imagemagick ? pas disponible/installable ?...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Tu as la réponse à ta question.
    Mais tu ne reconnais pas l'information car tu l'as affichée en hexadécimal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ od -t x1 Couple.256.ppm |head                                                                                                              
    0000000 50 36 0a 32 35 36 20 32 35 36 0a 32 35 35 0a 21
    0000020 19 1d 1b 14 15 12 0d 0f 11 0b 0e 12 0d 0e 12 0e
    0000040 11 14 10 0f 14 0e 11 12 0c 0c 09 05 05 0c 07 0f
    0000060 13 0d 0f 13 0e 10 14 0e 0d 14 0e 10 16 0c 10 16
    C'est l'équivalent de ce que tu as fait.
    Mais avec une image trouvée au hasard sur internet.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ od -c Couple.256.ppm |head
    0000000   P   6  \n   2   5   6       2   5   6  \n   2   5   5  \n   !
    0000020 031 035 033 024 025 022  \r 017 021  \v 016 022  \r 016 022 016
    0000040 021 024 020 017 024 016 021 022  \f  \f  \t 005 005  \f  \a 017
    0000060 023  \r 017 023 016 020 024 016  \r 024 016 020 026  \f 020 026
    0000100 016 020 026 021 022   ! 033 035 035 020  \r 024 017 016 027 020
    0000120 016 027 017 022 031 017 020 026 016 024 025 016 022 030 020 016
    0000140 033 016 017 031 021 021 032 021 024 032 022 021 037 025 024   "
    0000160 030 035   ' 032 035   ( 035       ' 036 033   ! 031 032   & 031
    0000200 024   & 030 032   " 027 027   # 031 033   B   J   M   F   1   7
    0000220   F   9   9   B   >   E   n   x   t   {   x   }   ~   s   r   n
    Ici, on a une version octale qui fait apparaître les caractères, s'il les reconnaît.
    On voit une image de numéro magique P6 et de taille 256x256, si je ne m'abuse.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ od -t cd1 Couple.256.ppm |head                                                                                                                                                                                                                                                                             
    0000000    P    6   \n    2    5    6         2    5    6   \n    2    5    5   \n    !
              80   54   10   50   53   54   32   50   53   54   10   50   53   53   10   33
    0000020  031  035  033  024  025  022   \r  017  021   \v  016  022   \r  016  022  016
              25   29   27   20   21   18   13   15   17   11   14   18   13   14   18   14
    0000040  021  024  020  017  024  016  021  022   \f   \f   \t  005  005   \f   \a  017
              17   20   16   15   20   14   17   18   12   12    9    5    5   12    7   15
    0000060  023   \r  017  023  016  020  024  016   \r  024  016  020  026   \f  020  026
              19   13   15   19   14   16   20   14   13   20   14   16   22   12   16   22
    0000100  016  020  026  021  022    !  033  035  035  020   \r  024  017  016  027  020
              14   16   22   17   18   33   27   29   29   16   13   20   15   14   23   16
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 210
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    bon, la question à 100.000 : pour quoi faire ?
    pourquoi pas imagemagick ? pas disponible/installable ?...
    Juste une question de rapidité. CAT affiche le fichier en 0m0,001s et une convertion (ou directement l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    convert ladeux-000000331.pgm txt:-
    car c'est cela qui m'intéresse) l'affiche en 0m0,005s soit 5 fois plus lent.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 210
    Points : 91
    Points
    91
    Par défaut
    Afin de ne pas réinventer la roue, j'ai trouvé.
    Voici ce que cela donne avec CAT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    seb@debian:~/seb$ time cat hash2.pgm
    P5
    9 8
    255
     
    real    0m0,001s
    user    0m0,000s
    sys     0m0,000s
    Avec pnmtopnm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    seb@debian:~/seb$ time pnmtopnm -plain hash2.pgm
    P2
    9 8
    255
    1 1 1 1 1 0 0 0 0
    0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0
     
    real    0m0,001s
    user    0m0,000s
    sys     0m0,000s
    avec IM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    seb@debian:~/seb$ time convert hash2.pgm txt:
    # ImageMagick pixel enumeration: 9,8,65535,gray
    0,0: (257,257,257)  #010101  gray(1)
    1,0: (257,257,257)  #010101  gray(1)
    2,0: (257,257,257)  #010101  gray(1)
    3,0: (257,257,257)  #010101  gray(1)
    4,0: (257,257,257)  #010101  gray(1)
    5,0: (0,0,0)  #000000  gray(0)
    6,0: (0,0,0)  #000000  gray(0)
    7,0: (0,0,0)  #000000  gray(0)
    8,0: (0,0,0)  #000000  gray(0)
    0,1: (0,0,0)  #000000  gray(0)
    1,1: (0,0,0)  #000000  gray(0)
    2,1: (0,0,0)  #000000  gray(0)
    3,1: (0,0,0)  #000000  gray(0)
    4,1: (0,0,0)  #000000  gray(0)
    5,1: (0,0,0)  #000000  gray(0)
    6,1: (0,0,0)  #000000  gray(0)
    7,1: (0,0,0)  #000000  gray(0)
    8,1: (0,0,0)  #000000  gray(0)
    0,2: (0,0,0)  #000000  gray(0)
    1,2: (0,0,0)  #000000  gray(0)
    2,2: (0,0,0)  #000000  gray(0)
    3,2: (0,0,0)  #000000  gray(0)
    4,2: (0,0,0)  #000000  gray(0)
    5,2: (0,0,0)  #000000  gray(0)
    6,2: (0,0,0)  #000000  gray(0)
    7,2: (0,0,0)  #000000  gray(0)
    8,2: (0,0,0)  #000000  gray(0)
    0,3: (0,0,0)  #000000  gray(0)
    1,3: (0,0,0)  #000000  gray(0)
    2,3: (0,0,0)  #000000  gray(0)
    3,3: (0,0,0)  #000000  gray(0)
    4,3: (0,0,0)  #000000  gray(0)
    5,3: (0,0,0)  #000000  gray(0)
    6,3: (0,0,0)  #000000  gray(0)
    7,3: (0,0,0)  #000000  gray(0)
    8,3: (0,0,0)  #000000  gray(0)
    0,4: (0,0,0)  #000000  gray(0)
    1,4: (0,0,0)  #000000  gray(0)
    2,4: (0,0,0)  #000000  gray(0)
    3,4: (0,0,0)  #000000  gray(0)
    4,4: (0,0,0)  #000000  gray(0)
    5,4: (0,0,0)  #000000  gray(0)
    6,4: (0,0,0)  #000000  gray(0)
    7,4: (0,0,0)  #000000  gray(0)
    8,4: (0,0,0)  #000000  gray(0)
    0,5: (0,0,0)  #000000  gray(0)
    1,5: (0,0,0)  #000000  gray(0)
    2,5: (0,0,0)  #000000  gray(0)
    3,5: (0,0,0)  #000000  gray(0)
    4,5: (0,0,0)  #000000  gray(0)
    5,5: (0,0,0)  #000000  gray(0)
    6,5: (0,0,0)  #000000  gray(0)
    7,5: (0,0,0)  #000000  gray(0)
    8,5: (0,0,0)  #000000  gray(0)
    0,6: (0,0,0)  #000000  gray(0)
    1,6: (0,0,0)  #000000  gray(0)
    2,6: (0,0,0)  #000000  gray(0)
    3,6: (0,0,0)  #000000  gray(0)
    4,6: (0,0,0)  #000000  gray(0)
    5,6: (0,0,0)  #000000  gray(0)
    6,6: (0,0,0)  #000000  gray(0)
    7,6: (0,0,0)  #000000  gray(0)
    8,6: (0,0,0)  #000000  gray(0)
    0,7: (0,0,0)  #000000  gray(0)
    1,7: (0,0,0)  #000000  gray(0)
    2,7: (0,0,0)  #000000  gray(0)
    3,7: (0,0,0)  #000000  gray(0)
    4,7: (0,0,0)  #000000  gray(0)
    5,7: (0,0,0)  #000000  gray(0)
    6,7: (0,0,0)  #000000  gray(0)
    7,7: (0,0,0)  #000000  gray(0)
    8,7: (0,0,0)  #000000  gray(0)
     
    real    0m0,313s
    user    0m0,016s
    sys     0m0,008s

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher une fichier image a partir de MYSQL database
    Par ilyazi dans le forum Débuter
    Réponses: 2
    Dernier message: 19/04/2008, 09h08
  2. Lire le format d'images PPM : de la lecture binaire ou texte des fichiers
    Par cladsam dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 08/05/2007, 12h35
  3. conversion d'un fichier image en binaire
    Par raynor911 dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/04/2007, 16h48
  4. Afficher un fichier binaire sous Windows
    Par Atomikx dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 14/12/2004, 00h29
  5. Comment lire un fichier image
    Par Charlemagne dans le forum DirectX
    Réponses: 9
    Dernier message: 12/03/2004, 00h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo