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

Entrée/Sortie Java Discussion :

Lire l'en-tête d'une image hexa


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Par défaut Lire l'en-tête d'une image hexa
    Bonjours,

    Je souhaite lire l'en tête d'une image bmp en hexadécimal, par java puis classer cet en-tête dans un tableau pour récupérer le nombre de colonnes et de lignes.

    J'ai déjà réussi à lire l'image en hexa, mais mon code lit tout le code hexa alors que je ne souhaite lire que l'en tête, et je n'arrive pas non plus à le mettre dans un tableau.
    Solutions ..?
    Voici le code(incomplet)
    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
    import java.io.FileInputStream;
     
    public class lecture {
     
    	public static void main(String[] args) {
    		    // Variables Locale
     
     
    	String fileName = "C:/Users/RACH/Desktop/Lecturee/lecture/src/lion.bmp";{
    	try{
    	    FileInputStream fis = new FileInputStream(fileName);
    	    while(fis.available() > 0){
    	        String hexa = Integer.toHexString(fis.read());
     
    	        char tableauAlpha[]= new char[65];
    	       for (char i = 0; i <= 65; i++)
    	       {
    	       tableauAlpha[i-0]=(char) i;
    				System.out.print(hexa);
    	    }
    	    fis.close();
    	}
    	}catch(Exception e){
    	    e.printStackTrace();
     
    	      }
    	    }
    	}
    	}

    Ps: l'en-tête contient 65 caractères.

    Merci d'avance.

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    je pense avoir compris que tu veux récupérer les 65 premiers octets d'un fichier bmp et les mettre dans un tableau de char??
    tu remarqueras que pour l'affichage, je rajoute un 0 quand hexa n'a qu'un caractere.

    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
     
    import java.io.FileInputStream;
     
    public class LecteurBMP {
     
    	public static void main(String[] args) {
     
    		char tableauAlpha[] = new char[65];
    		String fileName = "essai.bmp";
    		try{
    			FileInputStream fis = new FileInputStream(fileName);
    			int i = 0;
    			while(fis.available() > 0 && i < 65){
    				int valeur = fis.read();
    				String hexa = Integer.toHexString(valeur);
    				char car = (char) valeur;
    				if (hexa.length() == 1) 
    					hexa = "0" + hexa;
    				tableauAlpha[i] = car;
    				System.out.println("valeur int: " + valeur + "  hexa: " + hexa + "  char: " + car);
    				i = i + 1;
    			}
    			fis.close();
    		}
    		catch(Exception e){
    			e.printStackTrace();
    		}
    	}
    }

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while(fis.available() > 0 && i < 65){
    				int valeur = fis.read();
    doit être changé en ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while(i < 65){
    				int valeur = fis.read();
    				if (valeur <0) break;
    en effet, available() n'a rien à voir avec la fin de fichier, juste avec les io bloquant ou non bloquants

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Par défaut merci
    Merci beaucoup ! je vais voir ce que je peux faire

Discussions similaires

  1. [XL-2010] Utiliser le principe de l'en tête, pour une image et dans une case quelconque
    Par kini5454 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/10/2012, 14h45
  2. Lire une image Tiff en C/cpp avec Lib tiff
    Par syn_42 dans le forum MFC
    Réponses: 4
    Dernier message: 04/01/2006, 21h28
  3. lire une image et tracer une fonction
    Par Battosaiii dans le forum C
    Réponses: 4
    Dernier message: 23/11/2005, 15h21
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11

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