как сделать Image.Save сохранить как 24-битное изображение? - PullRequest
4 голосов
/ 09 ноября 2009

Как получить в C # принудительное сохранение растровых изображений, сохраняемых в виде 24-разрядных изображений, что можно увидеть, если щелкнуть правой кнопкой мыши свойства изображения в Windows. Все изображения, которые я сохраняю, имеют 32-битную версию. Я попробовал приведенный ниже код без удачи. Все исходные изображения также 24-битные, но всегда сохраняются как 32-битные.

ImageCodecInfo bmpCodec = FindEncoder(ImageFormat.Bmp);
EncoderParameters parameters = new EncoderParameters();
parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 24);
imgCheque.Save(DestinationFile.ToString(), bmpCodec, parameters);

Изображения должны быть 24-битными, так как они считываются другой программой, которая не может обрабатывать 32-битные изображения.

Заранее спасибо,

Soultech

1 Ответ

1 голос
/ 11 ноября 2009

Это какое-то использование?

// imgCheque source created somewhere else up here
using (Bitmap blankImage = new Bitmap(imgCheque.Width, imgCheque.Height, PixelFormat.Format24bppRgb))
{
    using (Graphics g = Graphics.FromImage(blankImage))
    {
        g.DrawImageUnscaledAndClipped(imgCheque, new Rectangle(Point.Empty, imgCheque.Size));
    }

    ImageCodecInfo bmpCodec = FindEncoder(ImageFormat.Bmp);
    blankImage.Save(@"C:\TEMP\output.bmp", bmpCodec, null);
}
...