Sri Lumpa
Messages postés177Date d'inscriptionmercredi 14 novembre 2007StatutMembreDernière intervention 1 juin 2010
-
22 mai 2008 à 16:41
MarkZ3 -
22 nov. 2008 à 20:06
Bonjour,
Je dois réaliser un petit module en C permettant de lire une image JPEG, d'y appliquer certaines modifications puis de la ré-enregistrer. Problème, lors de la lecture du fichier, une erreur apparaît : "Improper call to JPEG library in state 202". Quelqu'un saurait-il ce que ce code erreur "202" signifie ? J'ai passé une bonne partie de l'aprem' à chercher sur Google sans rien trouver.
Je laisse la partie du code qui plante :
int main(int argc, char* argv[])
{
unsigned char *image_origine, *image_renverse, *ligne;
struct jpeg_decompress_struct cinfo;
struct jpeg_compress_struct cout;
struct jpeg_error_mgr jerr;
FILE *file;
char *out_file;
unsigned char *p1, *p2;
int x, y, i, j, x_max, y_max, images_traitees;
if(argc < 2){
printf("<use> : renversement img1.jpg...");
return 0;
}
images_traitees = 0;
printf("Debut du traitement sur %d image(s)\n", argc-1);
for(i=1 ; i<argc ; i++){
//Ouverture du fichier jpg
if((file = fopen(argv[i], "r")) == NULL){
fprintf(stderr, "Erreur dans l'ouverture du fichier %s\n", argv[i]);
perror("fopen");
continue;
}
printf("Traitement de l'image %s\n", argv[i]);
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
// Lecture de l'image
jpeg_stdio_src(&cinfo, file);
jpeg_read_header(&cinfo, TRUE);
// Récupération de la largeur et hauteur
x_max = cinfo.image_width;
y_max = cinfo.image_height;
printf("\nTaille de l'image : %dx%d\n", x_max, y_max);
// Allocation de la mémoire pour les images
image_origine = (unsigned char*)malloc(x_max*y_max*sizeof(unsigned int));
image_renverse = (unsigned char*)malloc(x_max*y_max*sizeof(unsigned int));
// Chargement des pixels de l'image originelle
ligne = image_origine;
printf("\nDébut de lecture de l'image\n");
while(cinfo.output_scanline < y_max){
printf("ligne en cours ... %d\n", cinfo.output_scanline);
ligne = image_origine+3*x_max*cinfo.output_scanline;
jpeg_read_scanlines(&cinfo, &ligne, 1);
}
printf("Lecture de l'image terminée\n");
.......
.......
}
L'erreur semble apparaître au moment où il attaque la lecture de l'image elle-même : il m'affiche bien les dimensions de l'image mais il ne semble pas être capable de lire la première ligne de l'image. L'erreur semble se produire au niveau de la ligne soulignée.
Si quelqu'un sait comment me dépanner ce serait sympa.
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.