[C#] Compression d'image

cs_bibicool Messages postés 81 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 7 février 2007 - 8 janv. 2005 à 16:54
cs_bibicool Messages postés 81 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 7 février 2007 - 17 janv. 2005 à 19:26
Bonjour à tous,



Dans mon projet, je dois faire des acquisitions d'image, tout fonctionne nickel,

l'acquisition de mon image se passe bien et mon picture box se remplit avec l'image.

Maitenant je veux la sauvegarder, j'utilise ce code :



SaveFileDialog sd = new SaveFileDialog();

sd.Title = "Save Image As...";


sd.InitialDirectory =
ConfigurationSettings.AppSettings["dossier_photo"];
//Récupération du chemin du dossier photo

sd.FileName = TBIDClient.Text+".jpg";


sd.Filter = "Jpeg file (*.jpg |
*.jpg"; // jpg JPEG file format



if( sd.ShowDialog() != DialogResult.OK )

return;



pictureBox.Image.Save( sd.FileName );



mon image se sauvegarde bien,... cependant je me pose une question,



Il y a t'il moyen de gérer la compression du fichier jpeg ainsi créé ? et si oui comment ?



MErci pour votre aide,


Bibicool

7 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 janv. 2005 à 18:59
Dans le code qui suit, le controle "compression" est une trackbar




Encoder enc = Encoder.Compression;


EncoderParameter ep = new
EncoderParameter(enc, (long)(compression.Value));


EncoderParameters eps = new
EncoderParameters(1);

eps.Param[0] = ep;


ImageCodecInfo ici =
GetEncoderInfo("image/jpeg");



pictureBox.Image.Save(saveFile.FileName, ici, eps);



a++

Mx
0
cs_bibicool Messages postés 81 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 7 février 2007 1
8 janv. 2005 à 19:32
Super, merci

Bibicool
0
cs_bibicool Messages postés 81 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 7 février 2007 1
12 janv. 2005 à 20:14
Heu désolé MorpionMX, ou quelqu'un d'autre d'ailleurs



J'ai donc ajouté ce code... en créant la méthode GetEncoderInfo trouvé sur MSDN



private static ImageCodecInfo GetEncoderInfo(String mimeType)

{

int j;

ImageCodecInfo[] encoders;

encoders = ImageCodecInfo.GetImageEncoders();

for(j = 0; j < encoders.Length; ++j)

{

if(encoders[j].MimeType == mimeType)

return encoders[j];

}

return null;

}



Tout compile, c'est nickel.



Sauf bien sûr... si je n'utilise pas de trackbar, quel paramètre passer à la place du (long)Compression.value.



J'ai essayé 1, 100... mais ca changer rien à la définition de mon image.

J'ai cherché dans MSDN, mais bon rien n'y fait, on me parle de 32 bit.. mais j'ai jamais trop capté tout cela.

Quelqu'un pourrait me traduire et me donner la valuer minimal et maximal que je peux mettre pour faire varier ma compression ?



Un super grand merci

Bibicool
0
cs_bibicool Messages postés 81 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 7 février 2007 1
12 janv. 2005 à 20:27
Ha oui encore quelques détails,



J'ai donc essayé avec la trackbar.. valeur de 0 à 10...

Que je prenne 0 ou 10 mes photos sont les mêmes.



Je prends mes photos avec ma webcam, le poid d'une photo prise sans mon programme : 286ko en jpeg (352*288)

le poid des photo prise par mon programme : 10ko en jpeg(352*288)



Quelqu'un a une idée de la façon d'augmenter la qualité... merci


Bibicool
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
13 janv. 2005 à 09:30
A la place du (long) Compression.Value, tu peux mettre n'importe quelle valeur de type long.

Pour info, ma trackbar avait ces propriétés :



compression.Maximum = 100;

compression.Value = 100;



Je vais voir si je peux pas mettre une source allégée de mon prog, avec cette partie. Je vais m'y atteler maintenant



Au fait, désolé de ne pas avoir mis la fonction GetEncoderInfo(), J'ai complétement oublié.



Mx
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
13 janv. 2005 à 10:18
http://www.csharpfr.com/code.aspx?ID=28814



Voila, si ca peut t'aider
0
cs_bibicool Messages postés 81 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 7 février 2007 1
17 janv. 2005 à 19:26
Merci,



Je vais vérifier si ca fonctionne mieux et vous tiens au courant.

Pas de prob pour le GetEncoderInfo()... j'ai trouvé facilemetn,


Bibicool
0
Rejoignez-nous