我想用c#获取图像文件的位深度(和颜色空间)。
这是我的testfiles。使用Windows资源管理器的属性,我验证了它们的位深度(8,16,24,48,96)。
var source = new BitmapImage(new Uri(path));
int bitsPerPixel = source.Format.BitsPerPixel;
对于8位灰度,返回 8 ,对于所有其他类型,返回32
Image img = Image.FromFile(path);
string pixelFormat = img.PixelFormat.ToString();
PixelFormat适用于除32位浮点图像之外的所有图像,它会抛出System.OutOfMemoryException
。
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位?