[C] Conversion de JPEG en TIFF
Résolu
Sri Lumpa
Messages postés
177
Date d'inscription
Statut
Membre
Dernière intervention
-
Sri Lumpa Messages postés 177 Date d'inscription Statut Membre Dernière intervention -
Sri Lumpa Messages postés 177 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à développer un petit code rapide en C pour convertir des images JPEG en images TIFF. Le code fonctionne à part un petit détail... En gros, le fichier de sortie fait la bonne résolution, mais l'image en elle même est comprimée d'environ 30% en largeur (elle ne fait qu'un tiers de la largeur attendue et le reste de l'image est noir). De plus l'image de sortie prends 3 fois plus d'espace qu'elle ne devrait. Je pense que je me plante quelque part dans l'initialisation des TIFFTAG mais je n'arrive pas à voir où. Si quelqu'un arrive à me débloquer, ça m'arrangerait pas mal...
Voici mon code (Désolé, il est hyper crade :s) :
Je cherche à développer un petit code rapide en C pour convertir des images JPEG en images TIFF. Le code fonctionne à part un petit détail... En gros, le fichier de sortie fait la bonne résolution, mais l'image en elle même est comprimée d'environ 30% en largeur (elle ne fait qu'un tiers de la largeur attendue et le reste de l'image est noir). De plus l'image de sortie prends 3 fois plus d'espace qu'elle ne devrait. Je pense que je me plante quelque part dans l'initialisation des TIFFTAG mais je n'arrive pas à voir où. Si quelqu'un arrive à me débloquer, ça m'arrangerait pas mal...
Voici mon code (Désolé, il est hyper crade :s) :
#include <stdio.h> #include <stdlib.h> #include <tiff.h> #include <tiffio.h> #include <jpeglib.h> #include <jerror.h> int main(int argc, char* argv[]) { unsigned char *ligne; unsigned char *image; TIFF* out; struct jpeg_decompress_struct in; struct jpeg_error_mgr jerr; FILE *file; unsigned char * buf; tsize_t linebytes; int x, y, i, j, x_max, y_max, sampleperpixel, bitpersample; if(argc != 3){ fprintf(stdout, "<use>./tiff2jpeg inner_file outer_file"); return 0; } //Creation des struct jpeg in.err = jpeg_std_error(&jerr);; jpeg_create_decompress(&in); //Ouverture du fichier JPEG printf("ouverture des fichiers\n"); file = fopen(argv[1], "r"); //définition de la source pour l'image jpeg jpeg_stdio_src(&in, file); jpeg_read_header(&in, 1); // récupération des infos relatives à l'image source x_max = in.image_width; y_max = in.image_height; sampleperpixel = /*in.output_components;*/ 3; // output_components semble toujours valoir 0 printf("largeur %d hauteur %d components %d\n", x_max, y_max, sampleperpixel); image = (unsigned char*)malloc(y_max*x_max*sizeof(int)); ligne = image; // Débute de la décompression jpeg_start_decompress(&in); while(in.output_scanline < y_max){ ligne = image+3*x_max*(y_max-in.output_scanline); jpeg_read_scanlines(&in, &ligne, 1); } jpeg_finish_decompress(&in); jpeg_destroy_decompress(&in); //Décompression terminée //Ouverture fichier TIFF out = TIFFOpen(argv[2], "w"); // Définition des champs TIFF bitpersample = 8; linebytes = sampleperpixel * x_max; TIFFSetField(out, TIFFTAG_IMAGEWIDTH, x_max); TIFFSetField(out, TIFFTAG_IMAGELENGTH, y_max); TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, sampleperpixel); TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, bitpersample); TIFFSetField(out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT); TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(out, linebytes)); //initialisation du buffer tiff buf =(unsigned char *)_TIFFmalloc(linebytes); for(y = 0 ; y < y_max ; y++){ buf = (image+linebytes*(y_max-1-y)); if(TIFFWriteScanline(out, buf, y, 0) < 0) printf("plantage ligne %d\n", y);; } //Ecriture dans le fichier TIFF terminée TIFFClose(out); _TIFFfree(buf); printf("buffer tiff supprimé\n"); //free(image); return 0; }
A voir également:
- [C] Conversion de JPEG en TIFF
- Logiciel gratuit conversion calendrier républicain - Télécharger - Études & Formations
- Hevc to jpeg - Guide
- Télécharger jpeg - Télécharger - Photo & Graphisme
- Conversion mb en go ✓ - Forum Mail
- Conversion bytes en mo - Forum Réseau