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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
   |  
#include <stdio.h>
#include <stdlib.h>
#include <jpeglib.h>
#include <jerror.h>
 
#define TAILLE_MAX 10000
 
int main(int argc, char *argv[])
{
    // Déclaration
    unsigned char* buffer;
    char chaine[TAILLE_MAX] = "";
    int n, i, w, h, c, s;
    struct jpeg_decompress_struct cinfo;
    struct jpeg_error_mgr jerr;
    w = 10;
    h = 10;
    c = 1;
 
 
    buffer = (unsigned char*)malloc(n*sizeof(unsigned char));
	FILE* image = NULL;
	image = fopen(argv[1], "a+"); //(cf TP3) argv[1] à la place de "NomDeFichier"
	if(image != NULL)
	{
        cinfo.err = jpeg_std_error(&jerr);
        jpeg_create_decompress(&cinfo);// Initialisation de la structure
 
 
        jpeg_stdio_src(&cinfo,image);  // file est de type FILE * (descripteur de fichier sur le fichier jpega decompresser)
        jpeg_read_header(&cinfo,TRUE);// lecture des infos sur l'image jpeg
        jpeg_start_decompress(&cinfo);// lancement du processus de */
 
        while (n != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
        {
            //fgets(chaine, TAILLE_MAX, image) != NULL;
            //printf("%s", chaine); // On affiche la chaîne qu'on vient de lire
            buffer = (unsigned char*)malloc(n*sizeof(unsigned char));
            for(i = 0; i <= n; i++)
            {
                jpeg_read_scanlines(&cinfo,&buffer,n);
            }
 
 
        }
 
        jpeg_finish_decompress(&cinfo);
 
        jpeg_destroy_decompress(&cinfo);
 
        fclose(image); // On ferme le fichier
    }
    else
    {
        //On affiche un message d'erreur si on veut
        printf("Impossible d'ouvrir le fichier\n");
    }
 
    struct jpeg_compress_struct cinfob;
    struct jpeg_error_mgr jerrb;
 
    FILE* imageb = NULL;
	image = fopen(argv[2], "w"); //(cf TP3) argv[1] à la place de "NomDeFichier" // "/Dropbox/Public/UPJV/L2/C/Projet/new.jpg"
	if(imageb != NULL)
	{
 
        cinfo.err = jpeg_std_error(&jerrb);
        jpeg_create_compress(&cinfob); // Initialisation de la structure
 
        jpeg_stdio_dest(&cinfob,imageb);  // file est de type FILE * (descripteur de fichier
                                      // sur le fichier jpeg compressé final)
        cinfob.image_width=w;          // nombre de pixel par ligne
        cinfob.image_height=h;         // nombre de ligne de l'image
        cinfob.input_components=c;      // 3 pour une image couleur, 1 pour une N&B
        cinfob.in_color_space=s;       // la constante JCS_RGB pour une image couleur ou
                                      // JCS_GRAYSCALE pour une image N&B
        jpeg_set_defaults(&cinfob);    // initialisation des paramètres de compression
        jpeg_start_compress(&cinfob,TRUE); // lancement du processus de decompression
 
        while (n != NULL)
         {
                for(i = 0; i <= n; i++)
                {
                    jpeg_write_scanlines(&cinfob,&buffer,n); // écriture des n lignes suivantes de l'image stockées dans le buffer (de type unsigned char *)
                }
        }
 
        jpeg_finish_compress(&cinfob);
 
        jpeg_destroy_compress(&cinfob);
        fclose(imageb); // On ferme le fichier
    }
    else
    {
        //On affiche un message d'erreur si on veut
        printf("Le fichier existe déjà\n");
    }
 
    free(buffer);
    return 0;
}
 
//fgets(chaine, TAILLE_MAX, image) != NULL
 
 
// gcc main.c -o maincompile -ljpeg
// ./maincompile | 
Partager