【chromium】实现将本地图片转成Bitmap格式数据

chromium中将本地方图片(比如jpg、bmp、png格式的图像)转成bitmap位图格式。此操作在图像合成时非常有用。

//具体代码实现逻辑如下:

bool LoadImageFromFile(SkBitmap &bitmap, const std::string &file_path) {
    sk_sp<SkData> encData = SkData::MakeFromFileName(file_path.c_str());
    if (!encData) {
        return false;
    }
    
    SkCodecs::Register(SkPngDecoder::Decoder());
    SkCodecs::Register(SkBmpDecoder::Decoder());
    SkCodecs::Register(SkJpegDecoder::Decoder());
    
    SkBitmap* dst = &bitmap;

    std::unique_ptr<SkImageGenerator> gen(SkImageGenerators::MakeFromEncoded(std::move(encData)));

    // 尝试分配像素和获取像素,如果成功则返回true
    return gen && dst->tryAllocPixels(gen->getInfo()) &&
           gen->getPixels(gen->getInfo().makeColorSpace(nullptr), dst->getPixels(), dst->rowBytes());
}

注释说明:

· 使用 SkData::MakeFromFileName 函数从给定的文件路径加载图像数据。
· 注册了几种常见的图像解码器(PNG、BMP、JPEG)。
· 使用 SkImageGenerators::MakeFromEncoded 创建一个图像生成器。
· 尝试分配像素并获取像素数据,如果成功则返回 true,否则返回 false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值