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