2009-06-19 7 views
1

Ich bin Größe der Bilder mit C#/GDI + mit dem folgenden RoutingWie man mit Farbverlust auf GDI + Image Resize umgehen?

 bmpOut = new Bitmap(lnNewWidth, lnNewHeight); 
     Graphics g = Graphics.FromImage(bmpOut); 
     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear; 
     g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight); 
     g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight); 

und mit höchster Qualität kodieren.

Die Bilder, die ich bekomme, haben jedoch einen deutlichen Farbverlust (ich verwende nur JPG-Bilder). Die Qualität ist perfekt, aber die Farbe ist weggespült. Hast du eine Idee was los ist?

Vielen Dank im Voraus.

+0

Können Sie ein wenig mehr Code posten, wie zum Beispiel den tatsächlichen Speicheraufruf? Können Sie auch Beispielbilder irgendwo posten? – balpha

Antwort

0

Siehe How to disable subsampling with .NET/GDI+?

Das Problem ist, dass GDI + 's JPEG-Encoder nicht Chroma Subsampling erlaubt deaktiviert werden, so dass Farbinformationen werden mit der halben Auflösung gespeichert. Die einzige Problemumgehung könnte die Verwendung eines anderen Encoders sein, z. B. ImageMagick, der als Antwort auf das oben genannte vorgeschlagen wurde.