Changer le nombre de couleur d'une image .tif

kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008 - 24 mai 2005 à 11:30
kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008 - 25 mai 2005 à 12:36
Coucou,



J'aimerai savoir comment sauver mon image en 128 couleurs.



Contexte : Je possède une fonction qui transforme une image .tif en
.kap(format américain) mais cette fonction n'accepte que les images
ayant moins de 128 couleurs (c'est la norme du .kap).



Est-ce possible de changer le nombre de couleur à partir de c# ou mon
pauvre petit utilisateur devra lui-même convertir ces cartes avant?


Have a nice day



Bibax en fait un max

1 réponse

kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008
25 mai 2005 à 12:36
Coucou,



J'ai réussi à trouver comment passer en 128 couleurs(je pense ... donc je suis ;) )

Voici mon bout de code :

ImageCodecInfo myImageCodecInfo;

Encoder myEncoder;

EncoderParameter myEncoderParameter;

EncoderParameters myEncoderParameters;



//chnage the filename to obtain a tif file

Console.WriteLine(rasterFileName);

int index = rasterFileName.IndexOf(".");

string rasterFileNameTif = rasterFileName.Substring(0,index);

rasterFileNameTif = rasterFileNameTif.Insert(index, ".tif");

Console.WriteLine(rasterFileNameTif);



try

{


// Get an ImageCodecInfo object that represents the
TIFF codec.

myImageCodecInfo = GetEncoderInfo("image/tiff");

// Create an Encoder object based on the GUID

// for the ColorDepth parameter category.

myEncoder = Encoder.ColorDepth;

// Create an EncoderParameters object.


// An EncoderParameters object has an array of
EncoderParameter

// objects. In this case, there is only one

// EncoderParameter object in the array.

myEncoderParameters = new EncoderParameters(1);


// Save the image with a color depth of 7 bits per
pixel (128 colors).


myEncoderParameter = new EncoderParameter(myEncoder,
24L);

myEncoderParameters.Param[0] = myEncoderParameter;

Console.WriteLine(myEncoder);



picChart.Image.Save(rasterFileNameTif,myImageCodecInfo,myEncoderParameters);



Ce passage marche bien avec tous les formats possibles que j'ai en entrée.



Mais lorsque le fichier d'entrée est déjà un fichier un tif, j'obtiens une exception :

System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)

at displayRaster.displayRaster.ChangeRasterFormat() in
c:\documents and settings\franck\mes documents\visual studio
projects\displayraster\displayraster.cs:line 178





Auriez vous une idée du pourquoi de cette exception?

On devrait pouvoir sauver une image dans le même format mais avec un encodeage différent mais on dirait que ça pose probléme.



Merci pour vos futures aide.


Have a nice day



Bibax en fait un max
0
Rejoignez-nous