win32 解析、显示webp图片,及位图透明

ops/2024/12/26 21:25:51/

win32_webp_0">win32 解析、显示webp图片,及位图透明

CImage img;#include <webp/decode.h>
#include <fstream>
#include <wingdi.h>void parse(CDC* dc)
{std::ifstream ifs("None-1.webp", std::ios::binary);ifs.seekg(0, std::ios::end);auto size = ifs.tellg();ifs.seekg(0, std::ios::beg);std::vector<uint8_t> data(size);ifs.read((char*)data.data(), data.size());ifs.close();int width = 0;int height = 0;auto ret = WebPGetInfo(data.data(), size, &width, &height);//WebPDecoderConfig config;
#if 0auto webpdata = WebPDecodeRGBA(data.data(), size, &width, &height);for (int of = 0, max = width * height * 4; of < max; of += 4) {auto b = webpdata[of + 0];auto g = webpdata[of + 1];auto r = webpdata[of + 2];webpdata[of + 0] = r;webpdata[of + 1] = g;webpdata[of + 2] = b;//webpdata[of+0] = 255; // blue//webpdata[of+1] = 255; // green//webpdata[of+2] = 255; // redwebpdata[of+3] = 0;}
#else auto webpdata = WebPDecodeBGRA(data.data(), size, &width, &height);
#endifstd::cout << "width: " << width << ", height: " << height << std::endl;uint32_t nPlanes = 1;uint32_t nBitCount = 4 * 8;auto cj = (((width * nPlanes * nBitCount + 15) >> 4) << 1) * height;std::cout << "buffer size: " << cj << std::endl;auto hbitmap = CreateBitmap(width, height, nPlanes, nBitCount, webpdata);//uint32_t errno_ = ERROR_INVALID_BITMAP;std::cout << "create bitmap: " << hbitmap << std::endl;CDC memDC;						//定义一个显示设备对象memDC.CreateCompatibleDC(dc);			//创建CDC兼容设备memDC.SetBkMode(TRANSPARENT);memDC.SelectObject(hbitmap);					//设备选择当前的图纸-位图DeleteObject(hbitmap);dc->SetStretchBltMode(STRETCH_HALFTONE);dc->StretchBlt(100, 100, 100, 100, &memDC, 0, 0, width, height, SRCAND);//dc->BitBlt(100, 100, width, height, &memDC, 0, 0, SRCAND);//dc->TransparentBlt(100, 100, width, height, &memDC, 0, 0, width, height, 0x00ffff00);
}

http://www.ppmy.cn/ops/139343.html

相关文章

自然语言处理期末试题汇总

建议自己做&#xff0c;写完再来对答案。答案可能存在极小部分错误&#xff0c;不保证一定正确。 一、选择题 1-10、C A D B D B C D A A 11-20、A A A C A B D B B A 21-30、B C C D D A C A C B 31-40、B B B C D A B B A A 41-50、B D B C A B B B B C 51-60、A D D …

蓝桥杯准备训练(lesson1,c++方向)

前言 报名参加了蓝桥杯&#xff08;c&#xff09;方向的宝子们&#xff0c;今天我将与大家一起努力参赛&#xff0c;后序会与大家分享我的学习情况&#xff0c;我将从最基础的内容开始学习&#xff0c;带大家打好基础&#xff0c;在每节课后都会有练习题&#xff0c;刚开始的练…

composer简单入门

1、composer是什么 php包依赖管理工具 包&#xff1a;组件&#xff0c;一组相关的类&#xff0c;接口&#xff0c;trait的结合体 依赖&#xff1a;A->B->C->D composer就是用php语言开发的 下载地址&#xff1a;中文网 www.phpcomposer.com 2、组件放在哪里 查询平…

提升分布式系统响应速度:分布式系统远程调用性能提升之道

目录 一、远程调用直接案例分析 二、并行调用 &#xff08;一&#xff09;核心思想 &#xff08;二&#xff09;并行调用的实现方式 1. 基本思路 2. 代码示例 3. 关键点说明 4.线程池配置建议 三、数据异构 &#xff08;一&#xff09;场景重提 &#xff08;二&…

替代FTP最佳跨网文件传输解决方案——FileLink

在传统的企业文件传输中&#xff0c;FTP&#xff08;文件传输协议&#xff09;曾因其便捷性和高效性被广泛应用。然而&#xff0c;其固有的安全漏洞、对大文件传输支持的局限性、易受网络攻击等问题&#xff0c;已逐渐暴露出FTP在现代企业环境下的不足。针对这一问题&#xff0…

Kafka AdminClient API 来获取特定 Kafka 消费组的消费延迟

文章目录 代码流程详解1. Kafka 配置与创建 AdminClient2. 获取 Topic 的所有分区3. 获取消费者组的偏移量4. 获取每个分区的 log-end-offset5. 获取消费者组成员信息6. 计算 Lag 并输出信息7. 关闭 AdminClient8. 完整代码 代码功能总结&#xff1a; 这段代码的目标是通过 Kaf…

第十一课 Unity编辑器创建的资源优化_预制体和材质篇(Prefabs和Materials)详解

预制体(Prefabs) Unity中的预制体是用来存储游戏对象、子对象及其所需组件的可重用资源&#xff0c;一般来说预制体资源可充当资源模版&#xff0c;在此模版基础上可以在场景中创建新的预制体实例。 使用预制体的好处 由于预制体系统可以自动保持所有实例副本同步&#xff0c…

神经网络和支持向量机的基础——感知机模型

一、感知机模型的原理 感知机模型&#xff0c;也被称为神经元模型&#xff0c;其设计灵感来源于生物神经元的运行机制。它模拟了神经元的信息接收、处理和输出的过程&#xff0c;从而实现了对未知数据的分类。感知机模型的核心是线性回归与符号函数的结合。具体来说&#xff0…