System.Drawing.Bitmap C# 中的通道数
Number of channels in System.Drawing.Bitmap C#
我正在用 C# 编码,并以这种方式加载图像:
// loading image
string imageFileName = "myImage.jpg";
Bitmap bmp = new Bitmap(imageFileName, false);
// trying to display color so that I know how many channels I have
// except it always displays 4 values, whether I have 1, 3 or 4 channels
Color color = bmp.GetPixel(0, 0);
Console.WriteLine(color.ToString());
// locking the bitmap's bits
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
// doing stuff that requires me to know the number of channels of the image, amongst other things
// unlocking the bitmap's bits
bmp.UnlockBits(bmpData);
我需要知道图像中的通道数(通常是灰度 (1)、RGB (3) 或 RGBA (4)),但我不知道这些信息是如何存储的。
编辑:
我不想强制使用像素格式。我正在尝试加载图像,并在程序上计算出我加载的图像中的通道数。
有一个 PixelFormat
属性,你可以在 MSDN.
上阅读
您可以结合使用:GetPixelFormatSize 如果需要,它可以获得每个像素的字节数。
创作:
您需要使用带有 PixelFormat 参数的 overload of the Bitmap contructor。
用法:
bitmap.PixelFormat属性会告诉你你有什么。
我正在用 C# 编码,并以这种方式加载图像:
// loading image
string imageFileName = "myImage.jpg";
Bitmap bmp = new Bitmap(imageFileName, false);
// trying to display color so that I know how many channels I have
// except it always displays 4 values, whether I have 1, 3 or 4 channels
Color color = bmp.GetPixel(0, 0);
Console.WriteLine(color.ToString());
// locking the bitmap's bits
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
// doing stuff that requires me to know the number of channels of the image, amongst other things
// unlocking the bitmap's bits
bmp.UnlockBits(bmpData);
我需要知道图像中的通道数(通常是灰度 (1)、RGB (3) 或 RGBA (4)),但我不知道这些信息是如何存储的。
编辑: 我不想强制使用像素格式。我正在尝试加载图像,并在程序上计算出我加载的图像中的通道数。
有一个 PixelFormat
属性,你可以在 MSDN.
您可以结合使用:GetPixelFormatSize 如果需要,它可以获得每个像素的字节数。
创作:
您需要使用带有 PixelFormat 参数的 overload of the Bitmap contructor。
用法:
bitmap.PixelFormat属性会告诉你你有什么。