获取位图的颜色深度

时间:2017-02-02 15:35:54

标签: c# image winforms bit-depth

我想用c#获取图像文件的位深度(和颜色空间)。

这是我的testfiles。使用Windows资源管理器的属性,我验证了它们的位深度(8,16,24,48,96)。

BitmapImage.Format.BitsPerPixel

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

对于8位灰度,返回 8 ,对于所有其他类型,返回32

Image.PixelFormat

Image img = Image.FromFile(path);
string pixelFormat = img.PixelFormat.ToString();

PixelFormat适用于除32位浮点图像之外的所有图像,它会抛出System.OutOfMemoryException

Image.PropertyItems

This answer建议使用PropertyItems属性。

与上面的示例类似,但会引发32位图像的异常。

answer建议使用Windows API代码包。但我宁愿使用原生的c#功能。

ShellObject so = ShellObject.FromParsingName(filename)
int bitdepth = convert.ToInt32(so.Properties.GetProperty(SystemProperties.System.Image.Bitdepth).ValueAsObject);

是否有内置的方法来确定图像的位深度,它可以使用1,8,16,24,48,96位?

0 个答案:

没有答案