Преобразование битового массива PixelFormats в C#

Я должен преобразовать Битовый массив из PixelFormat.Format32bppRgb кому: PixelFormat.Format32bppArgb.

Я надеялся использовать Битовый массив. Клон, но это, кажется, не работает.

Bitmap orig = new Bitmap("orig.bmp");
Bitmap clone = orig.Clone(new Rectangle(0,0,orig.Width,orig.Height), PixelFormat.Format24bppArgb);

Если я выполняю вышеупомянутый код и затем проверяю клон. PixelFormat это установлено на PixelFormat.Format32bppRgb. Что идет на/как, я преобразовываю формат?

46
задан Omar 29 April 2013 в 21:02
поделиться

2 ответа

Неаккуратно, не редкость для GDI+. Это исправляет его:

Bitmap orig = new Bitmap(@"c:\temp\24bpp.bmp");
Bitmap clone = new Bitmap(orig.Width, orig.Height,
    System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

using (Graphics gr = Graphics.FromImage(clone)) {
    gr.DrawImage(orig, new Rectangle(0, 0, clone.Width, clone.Height));
}

// Dispose orig as necessary...
81
ответ дан 26 November 2019 в 20:11
поделиться
using (var bmp = new Bitmap(width, height, PixelFormat.Format24bppArgb))
using (var g = Graphics.FromImage(bmp)) {
  g.DrawImage(..);
}

Должно сработать так. Может быть, вы хотите задать некоторые параметры на g, чтобы определить режим интерполяции для качества и т.д.

7
ответ дан 26 November 2019 в 20:11
поделиться