Visual C++ : Bug avec Libjpeg
Bonjour tout le monde !
après des jours et des jours de bataille acharnée avec la librairie Jpeg, j'ai réussi à l'installer et à débugger quelques lignes de codes.
Le souci c'est que là je n'ai plus de solutions : j'ai un bug jamais rencontré (mais bon étant débutante en programmation, c'est pas difficile) :
Le débugger me dit "User Breakpoint called from code at 0x7c91123"
Ce bug apparaît à la ligne : "jpeg_finish_decompress(&cinfo);"
Et là je ne vois pas du tout ce que cela peut signifie:
Est-ce un problème de mémoire ou un problème de configuration du débugger??
Quelqu'un aurait-il une idée à me suggérer? :(
Merci
Code:
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
|
int main (char *photo_jpg)
{
cMatrice_Photo rvb;
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
unsigned char *image;
FILE *photo; // descripteur de fichier.
unsigned char *ligne;
int i3,j3; // utilisées lors des boucles.
fprintf(stderr, "Usage : %s fichier.jpg\n\n");
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
photo = fopen("photo_jpg.jpg","rb");
if(!photo)
{ cout << "Chargement du Fichier échoué"<< endl; return 1;}
jpeg_stdio_src(&cinfo, photo);
jpeg_read_header(&cinfo, TRUE);
// obtention des dimensions de l'image.
int width = cinfo.image_width;
int height = cinfo.image_height;
// allocation de mémoire pour le stockage des pixels en mémoire.
image = (unsigned char*) malloc (width * height * sizeof(unsigned char));
jpeg_start_decompress(&cinfo);
ligne=image;
while (cinfo.output_scanline<cinfo.output_height)
{
ligne=image + width * cinfo.output_scanline;
jpeg_read_scanlines(&cinfo,&ligne,1);
}
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
// passe dans chaque colonne de pixels (...)
for (i3=0;i3<256;i3++)
// (...) puis par ligne
{
for (j3=0;j3<256;j3++)
{ // on récupère les valeurs des couleurs RVB (...)
int color_r = image[i3*256*3+j3*3];
int color_v = image[i3*256*3+j3*3+1];
int color_b = image[i3*256*3+j3*3+2];
rvb.I = i3 +1;
rvb.J = j3 + 1;
rvb.R = color_r;
rvb.V = color_v;
rvb.B = color_b;
LMatrice_Photo.push_back(rvb);
}//for j
};//for i
fclose (photo);
return 0; } |
Ayla_21 :D
Re: Visual C++ : Bug avec Libjpeg
Citation:
Envoyé par Ayla_21
...
Le débugger me dit "User Breakpoint called from code at 0x7c91123"
Ce bug apparaît à la ligne : "jpeg_finish_decompress(&cinfo);"
Et là je ne vois pas du tout ce que cela peut signifie:
Est-ce un problème de mémoire ou un problème de configuration du débugger??
Quelqu'un aurait-il une idée à me suggérer? :(
...
Ben c'es un problème de mémoire et dans ton cas c'est un débordement...
Je crois que c'est normal car si ton image est en RVB cette ligne est fausse :
Citation:
Envoyé par Ayla_21
Code:
1 2 3
|
// allocation de mémoire pour le stockage des pixels en mémoire.
image = (unsigned char*) malloc (width * height * sizeof(unsigned char)); |
moi je mettrai plutôt
Code:
1 2 3
|
// allocation de mémoire pour le stockage des pixels en mémoire.
image = (unsigned char*) malloc (width * height * sizeof(unsigned char) * 3); |
car tu as un unsigned char par composante (R,G et B)