2010-12-08 74 views
1

Je suis en train de construire un traitement par lots pour enregistrer un répertoire d'images .tif au format .jpgs. Le traitement fonctionne bien. Cependant, les jpgs rendus ont une teinte bleue. Ils ne sont pas "bleus", autant qu'ils ont une teinte plus froide, une teinte bleue. Les originaux sont beaucoup plus lumineux et plus chauds. Voilà comment je suis en train de créer le jpeg redimensionnée:C# redimensionner, resave .tif en .jpg donne une teinte bleue à la nouvelle image

 Bitmap bitmap = new Bitmap(image.Image, size); 

     Graphics graphics = Graphics.FromImage(bitmap); 
     graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 
     graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 
     graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.None; 
     graphics.DrawImage(image.Image, 0, 0, size.Width, size.Height); 

     // Get EncoderInfo("image/jpeg") gets the jpeg Codec by mime type 
     bitmap.Save(path, GetEncoderInfo("image/jpeg"), EncoderParameters); 

Les images TIF originales sont 7MB est de taille - grand par rapport aux jpegs rendus. Peut-être que cela a quelque chose à voir avec ça. Pas certain.

Je suis monté vide sur les Googles. Quelqu'un at-il une expérience avec ce ou un conseil sur ce qu'il faut essayer ensuite? Merci!

+0

Le code n'a pas beaucoup de sens, vous dessinez le bitmap sur lui-même. Cela pourrait avoir des effets secondaires. Quelque chose semble être fait avec EncoderParameters, quoi d'impossible. –

Répondre

0

Il se peut que les fichiers d'origine aient un profil de couleur. Dans ce cas, vous devez également copier cette information dans le nouveau fichier. Je ne sais pas comment faire cela avec les classes d'imagerie de .NET.

+0

Peut-être que c'est ce que vous utilisez pour les profils de couleur? Je suis au milieu de l'enquête moi-même: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.colorconvertedbitmap(v=vs.90).ASPX – drzaus

0

je voudrais d'abord proposer un test:

  1. Créer une image simple avec une seule couleur.
  2. Convertissez-le en format JPEG.
  3. Ensuite, vérifiez dans un paquet de photo si la teinte a réellement changé ou si c'est votre perception.
0

De la documentation MSDN, il semble que vous pouvez faire cela un peu plus simple (en supposant image.Image est une instance System.Drawing.Image réelle):

image.Image.Save(path, System.Drawing.ImageFormat.Jpeg)

Cela pourrait aider - il semble comme si vous preniez votre TIF, convertissant en un bitmap, et seulement ensuite convertir en JPG.

+0

J'ai essayé ceci comme bien mais a eu le même résultat. – natealvar