Подтвердить что ты не робот

Как получить Bitsperpixel из растрового изображения

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

Какой лучший способ получить "бит на пиксель"?

Моя начальная точка - следующий пустой метод: -

public int GetBitsPerPixelMethod( system.drawing.bitmap bitmap )
{
   //return BitsPerPixel;
}
4b9b3361

Ответ 1

Используйте свойство Pixelformat, это возвращает Pixelformat enumeration, который может иметь такие значения, как fe Format24bppRgb, который, очевидно, составляет 24 бит на пиксель, поэтому вы должны сделать что-то вроде этого:

switch(Pixelformat)       
  {
     ...
     case Format8bppIndexed:
        BitsPerPixel = 8;
        break;
     case Format24bppRgb:
        BitsPerPixel = 24;
        break;
     case Format32bppArgb:
     case Format32bppPArgb:
     ...
        BitsPerPixel = 32;
        break;
     default:
        BitsPerPixel = 0;
        break;      
 }

Ответ 2

Вместо создания вашей собственной функции я бы предложил использовать эту существующую функцию в рамках:

Image.GetPixelFormatSize(bitmap.PixelFormat)

Ответ 5

Как насчет Image.GetPixelFormatSize()?

Ответ 6

Свойство Bitmap.PixelFormat сообщит вам тип формата пикселей, который имеет растровое изображение, и из этого вы можете сделать вывод о количестве бит на пиксель. Я не уверен, есть ли лучший способ получить это, но наивный способ, по крайней мере, будет примерно таким:

var bitsPerPixel = new Dictionary<PixelFormat,int>() {
    { PixelFormat.Format1bppIndexed, 1 },
    { PixelFormat.Format4bppIndexed, 4 },
    { PixelFormat.Format8bppIndexed, 8 },
    { PixelFormat.Format16bppRgb565, 16 }
    /* etc. */
};

return bitsPerPixel[bitmap.PixelFormat];