J'essaye de transformer une image CMJN en RVB. Si je le fais au chargement de l'image en n'utilisant pas le paramètre GFL_LOAD_ORIGINAL_COLORMODEL alors cela se passe bien.
Si j'utilise le paramètre précité et que j'utilise ensuite la fonction gflChangeColorDepth alors cela ne marche pas du tout.
Voici un exemple de code qui prend en entrée une image CMJN et sors deux fichiers BMP, output1.bmp qui est correct et output2.bmp qui est mauvais.
Code: Select all
#include "stdio.h"
#include "libgfl.h"
void CheckGfl (GFL_ERROR Erreur)
{
if (Erreur != GFL_NO_ERROR )
{
printf ("Erreur: %d", Erreur);
exit(1);
}
}
int main(int argc, char* argv[])
{
gflLibraryInit();
//Ouverture du fichier
GFL_LOAD_PARAMS load_option;
gflGetDefaultLoadParams( &load_option );
//Parametres de la sauvegarde
GFL_SAVE_PARAMS save_option;
gflGetDefaultSaveParams(&save_option);
save_option.FormatIndex = 4; //BMP
//*****Chargement et convertion en une fois
GFL_FILE_INFORMATION file_info;
GFL_BITMAP* bitmap;
CheckGfl (gflLoadBitmap(argv[1], &bitmap, &load_option, &file_info));
CheckGfl (gflSaveBitmap("output1.bmp", bitmap, &save_option));
//*****Conversion apres l'ouverture
load_option.Flags=GFL_LOAD_ORIGINAL_COLORMODEL;
CheckGfl (gflLoadBitmap(argv[1], &bitmap, &load_option, &file_info));
//Conversion en RGB
CheckGfl (gflChangeColorDepth(bitmap,NULL,GFL_MODE_TO_RGB,GFL_MODE_NO_DITHER));
CheckGfl (gflSaveBitmap("output2.bmp", bitmap, &save_option));
return 0;
}
Ithier