如何从一个位图得到Bitsperpixel(how to get Bitsperpixel from

2019-07-30 04:13发布

我有一个要求我给它从位图的bitsperpixel第三方组件。

什么是得到“每像素位”的最好方法?

我的出发点是在下面的空格方法: -

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

Answer 1:

使用像素格式属性 ,这将返回一个像素格式枚举能有像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;      
 }


Answer 2:

而不是创建自己的功能,我建议使用框架这个现有的功能:

Image.GetPixelFormatSize(bitmap.PixelFormat)


Answer 3:

var source = new BitmapImage(new System.Uri(pathToImageFile));
int bitsPerPixel = source.Format.BitsPerPixel;

上面的代码需要至少.NET 3.0

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.aspx



Answer 4:

什么Image.GetPixelFormatSize()?



Answer 5:

尝试:

Bitmap.PixelFormat

见的的PixelFormat属性的可能值 。



Answer 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];


文章来源: how to get Bitsperpixel from a bitmap
标签: c# drawing