You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 12:39:39