begin process at 2010 03 22 13:28:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Des pixels qui font ce qui veulent...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Des pixels qui font ce qui veulent...

mercredi 25 août 2004 à 11:16:35 | Des pixels qui font ce qui veulent...

talaron

Voici un petit programme en C qui permet de lire une image BMP et de l'enregistrer, dans le but de faire des opérations sur celle-ci ensuite.
Mon problème est que lorsque j'enregistre une image linéaire (environ 50 pixels), deux pixels (un bleu et un rouge) apparaissent sur l'image. (mais j'ai quand même une image !!!)
Et lorsque l'image est une image normal, je n'obtiens que du blanc.
Si vous voyez ce qui ne vas pas ca m'aiderait beaucoup.




#include "stdio.h"
#include "stdlib.h"
#include "windows.h"
#include "math.h"


int main(int argc,char*argv[])
{
FILE *imgDep,*imgFin;
unsigned long nb, nbLu, nbEcri;
unsigned char *pixel;
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER bmih;
RGBQUAD *rgbq;




// LECTURE DES DONNEES DE LIMAGE

imgDep = fopen("C:\\windows\\bureau\\TraitementImage\\images\\linessaiss.bmp","rb");


if (imgDep == NULL)
{printf ("Problemes images depart 1");
return (0);}

nb=1;
nbLu=fread(&bmfh,sizeof(BITMAPFILEHEADER),nb,imgDep);
if(nbLu!=nb)
{
fclose(imgDep);
printf("prb lecture\n");
return(0);
}

nbLu=fread(&bmih,sizeof(BITMAPINFOHEADER),nb,imgDep);
if(nbLu!=nb)
{
fclose(imgDep);
printf("prb lecture2\n");
return(0);
}
printf("image de largeur %d et de hauteur %d\n\n",bmih.biWidth,bmih.biHeight);

nb=bmih.biClrUsed;
rgbq=(RGBQUAD*)malloc(nb*sizeof(RGBQUAD));
if(rgbq) nbLu=fread(rgbq,sizeof(RGBQUAD),nb,imgDep);
if(nbLu!=nb)
{
fclose(imgDep);
printf("prb lecture3\n");
return(0);
}

nb= bmih.biHeight*bmih.biPlanes*bmih.biBitCount/8;
//nb= bmih.biHeight*3;(image linéaire)
pixel=(unsigned char*)malloc(nb*sizeof(unsigned char));
if(pixel)nbLu=fread(pixel,sizeof(unsigned char),nb,imgDep);
if(nbLu!=nb)
{
fclose(imgDep);
printf("prb lecture4\n");
return(0);
}

fclose (imgDep);

// ECRITURE

imgFin = fopen("C:\\windows\\bureau\\TraitementImage\\resultat\\resultat.bmp","wb");

if (imgFin == NULL)
{printf ("Problemes images depart 1");
return (0);}

nb=1;
nbEcri=fwrite(&bmfh,sizeof(BITMAPFILEHEADER),nb,imgFin);
if(nbEcri!=nb)
{
fclose(imgFin);
free(rgbq);
free(pixel);
printf("prb ecriture1\n");
return(0);
}

nbEcri=fwrite(&bmih,sizeof(BITMAPINFOHEADER),nb,imgFin);
if(nbEcri!=nb)
{
fclose(imgFin);
free(pixel);
free(rgbq);
printf("prb ecriture2\n");
return(0);
}


nb=bmih.biClrUsed;
nbEcri=fwrite(rgbq,sizeof(RGBQUAD),nb,imgFin);
if(nbEcri!=nb)
{
fclose(imgFin);
free(rgbq);
printf("prb ecriture3\n");
free(pixel);
return(0);
}

nb= bmih.biHeight*3;
nbEcri=fwrite(pixel,sizeof(unsigned char),nb,imgFin);
if(nbLu!=nb)
{
fclose(imgFin);
free(pixel);
free(rgbq);
printf("prb ecriture4\n");
return(0);
}

free(pixel);
free(rgbq);
fclose (imgFin);

return (0);

}
mercredi 25 août 2004 à 12:14:31 | Re : Des pixels qui font ce qui veulent...

Pamaury

la première chose que je vais te demander(pardonne moi) c'est: est-ce que ton loadeur est correct ? Parce que charger une image bmp n'estr pas toujours facile si on prend en compte tout les format . Ensuite, est-tu sur que tu sauvegarde bien le fichier sous un format valide ?
mercredi 25 août 2004 à 12:29:36 | Re : Des pixels qui font ce qui veulent...

JCDjcd

GetDIBits et SetDIBits, ce n'est pas plus simple ? en plus c'est le systeme qui se charge de tout. (avec un LoadBitmap ou LoadImage pour obtenir un HBITMAP)
mercredi 25 août 2004 à 13:06:09 | Re : Des pixels qui font ce qui veulent...

talaron

En fait le loader et l'enregistrement viennent d'un cours et ont été donnés tel quel !!!
D'habitude je programme en c++ et cela ne me pose pas de problème.
je vais regarder sur msdn ce que font les fonctions indiqués par JCDjcd.
mercredi 25 août 2004 à 16:39:51 | Re : Des pixels qui font ce qui veulent...

JCDjcd

J'ai fais une source sur les bitmaps il n'y a pas longtemps sur les bitmaps, et cela utilise SetDIBits et aussi GetDIBits si ca vous interesse ...
mercredi 25 août 2004 à 16:57:13 | Re : Des pixels qui font ce qui veulent...

talaron

pour sur que ca m'interesse.
comment fo faire pour se la procurer ???
mercredi 25 août 2004 à 18:46:24 | Re : Des pixels qui font ce qui veulent...

JCDjcd

http://www.cppfrance.com/code.aspx?ID=25625
jeudi 26 août 2004 à 08:01:47 | Re : Des pixels qui font ce qui veulent...

talaron

merci

je vais regarder ça now
vendredi 10 septembre 2004 à 20:48:50 | Re : Des pixels qui font ce qui veulent...

magic_Nono

Membre Club
les includes du premier post de cette liste semblme H ment suspects...


po de <> ...



Magic Nono: l'informagicien!


Cette discussion est classée dans : printf, nb, bmih, imgdep, imgfin


Répondre à ce message

Sujets en rapport avec ce message

Pb avec 'SYSTEM' [ par AtomicREW ] Je vous previens tout de suite mon code est vraiment foireux, j'ai commence le C qu'aujourd'hui et sans doc a proprement dit. J'ai mis la ligne où Dev Affichage d'une image BMP en C [ par sabres ] Voici le code source d'un début de programme écrit sous Turbo C/C++ permettant d'afficher les caractéristiques d'une image BMP et de l'afficher. Le pr Multiplication d'une matrice par un scalaire [ par skrime ] Bonjour, j'ai un exercice à faire qui consiste à multiplier une matrice par un scalaire en C (la prof ne veut pas qu'on se serve des boucles FOR), je syntax error at end of input [ par azerty53 ] Bonsoir à la communauté cppfrancej'ai un probleme sur mon code que je n'arrive pas du tout a résoudre et ca fait deja un certain temps que je suis des lecture/écriture fichier binaire [ par SesechXP ] Salut !J'ai un programme modulaire à faire en C sous Borland C++ 5 pour un TP dont la fonction principale est donnée et je dois faire les différentes ptit probleme [ par aladdin_wydadi ] voila le code source ke j'ai trouvé : #include#include //--------------------------------------------------------------------// Conversion d'un nombre sos [ par alex64100 ] bonjour,je dois programmer une appli qui, aprés saisie  d'une date, affiche le jour de la semainevoici mon code  :#include<font CORRECTION HELP PLEASE NOOB [ par ziziboss ] #include #include #include int main (){ int nb_alea = 0; int nb_choisi = 0; randomize (); nb_alea = random(101); do { clrscr (); printf("Vous Comment imprimer le contenu d'une structure? [ par madalf17 ] Salut, j'aimerai savoir comment imprimer le contenu d'une structure.Voici une partie du code dont la fonction affichage, je voudrai imprimer ce que ce Unsigned __int64 et PRINTF [ par BeLZeL ] Ce message n'attend pas de réponse. Il est là à titre indicatif. Il aidera les gens qui tomberont dessus via un moteur de recherche.En effet, j'ai un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales