如何在SkiaSharp中判断BMP图像是否为单色?
解决SkiaSharp验证单色BMP图像的问题
你的问题出在SKBitmap.Decode的默认行为:这个方法会自动将所有解码后的图像转换为32位ARGB格式的SKBitmap,所以无论原始BMP是1位单色还是其他位深,最终BitsPerPixel都会返回32。
要获取图像的原始位深(判断是否为单色),应该使用SKCodec来读取图像的元数据,它不会自动转换图像格式,能直接获取原始的图像信息:
using (var stream = new SKMemoryStream(contentData)) using (var codec = SKCodec.Create(stream)) { if (codec.Info.BitsPerPixel != 1) { throw new Exception("该BMP图像不是单色图像"); } }
如果之后需要对图像进行处理,也可以通过SKBitmap.Decode的重载指定解码格式,但仅做验证的话,使用SKCodec更轻量高效,避免不必要的图像解码转换。
内容的提问来源于stack exchange,提问作者coredev
相关产品推荐
相关产品推荐

