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

 C Discussion :

le header d'une image bmp en C


Sujet :

C

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut le header d'une image bmp en C
    BSR tous le monde.

    j'ai ecrit un code pour charger une image bmp en C mais l'image k j'ai 64bites.
    comment je pe corrriger le code voila l'instruction ou le code s'arrete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (head.imhead.bpp!=24) 
    {
    	return NULL;  // supporte que le 24 bits pour l'instant
    }
    Merci.

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par hadjira10 Voir le message
    BSR tous le monde.

    j'ai ecrit un code pour charger une image bmp en C mais l'image k j'ai 64bites.
    comment je pe corrriger
    une correction possible consiste à remplacer "BSR" par "Bonsoir" par exemple, et "je pe" par "je peux"
    en ce qui concerne les 64 bites j'envisage assez aisément que ça puisse te poser problème, dans le doute remplace par "octets" c'est plus sûr


    en revanche j'avoue n'avoir pas compris le fond de ta question, le plus simple c'est de mettre ta fonction ou ton code en entier (au moins la partie concernée qu'on puisse tester, incluant son contexte, ce qu'il manque ici en fait) et le message d'erreur éventuel

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    merci pour la reponse.
    pour le code ya pas des erreurs marche correctement avec les images 24 bites (par exemple: image22.jpeg) mais quand j'ai changé l'images j'ai pris l'image de (example image24.jpeg) le code se compile correctement et sans erreurs mais s'arrete ( ne charge pas l'image 24)/
    la fonctions qui produit l'arret du code montionne dans le code au-dessus. (supporte que le 24 bits pour l'instant)

    Remaque:
    j'ai chargé les images en jpeg mais j'ai travaillé avec en bmp.


    Nom : imag24.jpeg
Affichages : 201
Taille : 2,4 Ko
    Nom : image22.jpeg
Affichages : 204
Taille : 3,4 Ko

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    En effet, en 24 bpp (ce que je supporte uniquement), chaque pixel embarque ses couleurs.

    Dans les formats plus pauvres (256 couleurs), chaque pixel est codé sous un seul octet.

  5. #5
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    ok, je retente une dernière fois,

    • on écrit pas "bites" mais "bits", "bit" étant une unité élémentaire du système binaire et de l'informatique en général, "bite" étant au choix, le verbe "mordre" en anglais ou un mot familier désignant le sexe masculin en français commun, à toi de voir.
    • je te crois sur parole que l'erreur est sur la ligne que tu donnes, mais tu veux qu'on en fasse quoi ? la ligne est correcte, tout dépend du contexte. le plus simple c'est de mettre ta fonction ou ton code en entier (au moins la partie concernée qu'on puisse tester, incluant son contexte, ce qu'il manque ici en fait) et le message d'erreur éventuel


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (read(discussion)) {
      if (code) aide(hadjira10);
      else break;
    }

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 100
    Points
    43 100
    Par défaut
    Remaque:
    j'ai chargé les images en jpeg mais j'ai travaillé avec en bmp.
    comment veux-tu qu'une image jpeg s'ouvre avec un code pour une image bmp ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    merci pour vos reponses
    pour les images j'ai travaillé avec en bmp ( mais j'ai pas peux les telecharger dans les fichiers joindre en bmp c'est pour ca j'ai changé le format en jpeg)
    pour le code ( voici le code)

    code.zip

  8. #8
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    au delà de la structure du code qui n'est pas très heureuse à mon sens, j'ai surtout observé des erreurs simples

    • perso j'ai commencé par un chmod 644 * sur les fichiers de l'archive suivi d'un dos2unix *.c *.h, juste pour être sûr de partir sur une base correcte
    • le fichier fourni est imag24.bmp, il faut le renommer en image24.bmp pour que ça fonctionne
    • tu as mis un commentaire dans testbmp.c qui se referme à la ligne 16 derrière l'accolade, en fait il faut fermer le commentaire derrière l'accolade de la ligne 17
    • puis j'ai compilé & exécuté :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      $ gcc -Wall 01_09_02_testbmp.c 01_09_02_bmp.c -o pouet && ./pouet
      01_09_02_testbmp.c: In function ‘main’:
      01_09_02_testbmp.c:5:8: attention : unused variable ‘j’ [-Wunused-variable]
      01_09_02_testbmp.c:5:6: attention : unused variable ‘i’ [-Wunused-variable]
      rien à signaler.

    j'obtiens bien un fichier nouvellement créé test1.bmp de 30558 octets et identique à image24.bmp, lisible par un outil externe (eog)

    je n'ai donc pas eu l'erreur que tu mentionnais plus haut, peut-être qu'en fait la ligne était légèrement plus haut sur le if (!F) return NULL, comme tu n'affiches pas de message d'erreur c'est plus difficile de debug même pour toi

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    merci pour la reponse c resolue.
    mais quand j'ai changé l'image j'ai pas eu des erreurs mais l'execution s'arrete voila le msg/

    [code] 01_09_02_testbmp.c: In function ‘main’:
    01_09_02_testbmp.c:5: warning: unused variable ‘j’
    01_09_02_testbmp.c:5: warning: unused variable ‘i’
    Erreur de segmentation
    [code]
    vous trouvez ici les images
    Images attachées Images attachées   

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je ne sais pas ce que tu as fait avec ton ZIP de code, mais il réclame une version de WinZip plus récente que ce que j'ai sous la main.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Je ne sais pas ce que tu as fait avec ton ZIP de code, mais il réclame une version de WinZip plus récente que ce que j'ai sous la main.
    je me permets de remettre l'archive en pj, avec les modifications apportées plus haut (fonctionnel donc)
    code.tar.gz

    Citation Envoyé par hadjira10 Voir le message
    [code] 01_09_02_testbmp.c: In function ‘main’:
    Erreur de segmentation[code]
    vous trouvez ici les images
    les images que tu donnes sont en JPEG et tu ne donnes pas non plus la ligne d'invocation de ton programme; on ne peut pas t'aider
    comme dit plus haut, tu devrais au minimum tester le retour de tes fonctions et mettre des messages d'erreur (sur fopen, fread etc.)

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    • Il y a déjà une erreur sur la ligne I->dat = calloc(1,w*h*sizeof(Pixel*));; déjà il faudrait mettre sizeof(Pixel), mais en plus il devrait être seul à droite:
      Code C : Sélectionner tout - Visualiser dans une fenêtre à part
      I->dat = calloc(w*h, sizeof(Pixel));
    • CopieImage() devrait accepter un pointeur const
    • Pourquoi i et j plutôt que des noms corrects, comme colonne et ligne, ou bien abscisse et ordonnee ou encore x et y?
    • Tes assertions (même si elles devraient probablement être des tests en dur, à la place) devraient inclure l->dat.
    • Attention, la hauteur stockée dans une structure BITMAPINFOHEADER peut être négative (même si dans les deux images du .tar.gz, elle ne l'est pas): Il faut, au strict minimum, prendre sa valeur absolue (le coup de l'inversion de l'ordre des lignes, c'est pour quand le reste marche).
    • Je ne suis pas certain de ce que pitch représente ni s'il est bien calculé.
    • Le main() contient une fuite de mémoire: La première image avant le chargement.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 22/02/2005, 17h45
  2. Réponses: 2
    Dernier message: 19/11/2004, 08h54
  3. [C#] Comment convertir une image bmp en jpg !!!
    Par vandeyy dans le forum Windows Forms
    Réponses: 5
    Dernier message: 13/07/2004, 20h37
  4. inserer une image BMP dans un fichier rtf
    Par Alice9 dans le forum MFC
    Réponses: 17
    Dernier message: 06/07/2004, 10h31
  5. [BPW] Impression d'une image BMP
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 21/08/2003, 14h34

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