news 2026/9/1 13:42:12

stb 单文件库:拷一个头文件,10 行代码跑通 stb 图像处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
stb 单文件库:拷一个头文件,10 行代码跑通 stb 图像处理

stb 单文件库:拷一个头文件,10 行代码跑通 stb 图像处理

【免费下载链接】stbstb single-file public domain libraries for C/C++项目地址: https://gitcode.com/GitHub_Trending/st/stb

每次要写个读 PNG 的小工具,都得先拖一堆依赖库和构建系统进来,配置时间经常比功能本身还长。stb 是另一条路:stb 图像处理、字体渲染、数据结构这些活,各自被压进一个头文件里,零配置,拷走就能用。

什么场景下你需要它

做小游戏时想快速生成一张无缝拼接的瓦片地图,又不想自己设计瓦片集和连接规则,仓库里的 Wang tile(按边缘颜色自动拼接的瓦片集)生成器可以直接上手。写工具脚本只需要读写几张 PNG,实在不想为它配一套 CMake,单个 stb_image.h 就能独立编译。游戏里要把 TrueType 字体文字画进纹理,引入 freetype 又嫌重,stb_truetype.h 一个文件足够。

功能地图:一个文件能干什么

  • 图像处理:stb_image.h 加载常见图片格式,stb_image_write.h 保存 PNG/JPEG,stb_image_resize2.h 负责缩放
  • 字体渲染:stb_truetype.h 解析 TrueType 字体并可生成 SDF(用距离场表示字体轮廓,放大后依然锐利)位图,stb_easy_font.h 几行代码画出内置小字体
  • 数据结构:stb_ds.h 提供动态数组、哈希表等写法,像写宏一样用容器
  • 地图生成:stb_herringbone_wang_tile.h 从少量瓦片拼出大幅无缝地图

跑起来:3 步走通最小示例

最短路径就是:拷贝头文件 → 在一个 .c 文件里定义实现宏 → 调 API。

#define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #define STB_IMAGE_WRITE_IMPLEMENTATION #include "stb_image_write.h" int main(void) { int w, h; // 加载 PNG 并强制转成 4 通道 RGBA unsigned char *px = stbi_load("in.png", &w, &h, NULL, 4); stbi_write_png("out.png", w, h, 4, px, 0); stbi_image_free(px); return 0; }

gcc main.c -o main -lm直接编译,跑完得到 out.png,全程没碰任何配置文件 ✅

眼见为实:效果展示

stb_herringbone_wang_tile 生成的黑白地图,每一块都是那几个瓦片之一,但接缝全部对上了。

换一组随机种子,同一套连接规则也能长成这种高对比度的黑白纹理。

同一行字从 10pt 一路渲到 104pt,大字号下边缘依然干净。

别忽略的这几个细节

  1. 每个 STB_XXX_IMPLEMENTATION 宏在整个项目里只能出现在一个源文件里,否则会链接报错。
  2. 只拷你需要的头文件,别把仓库根目录一堆 .h 全塞进工程。
  3. 每个头文件开头的大段注释就是完整使用说明,带样例代码,不用另找文档。
  4. stbi_load 的通道参数填 4 可直接拿到 RGBA,用完记得 stbi_image_free。
  5. Wang tile 生成需要加载专用工具生成的模板文件,任意 PNG 塞不进去。

公共领域许可意味着直接放进商业项目也没问题,条款见 LICENSE,使用技巧可看 docs/stb_howto.txt,各模块的完整示例代码都在 tests/ 目录里。

【免费下载链接】stbstb single-file public domain libraries for C/C++项目地址: https://gitcode.com/GitHub_Trending/st/stb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 13:39:23

过渡态计算实战:从CI-NEB方法到反应速率预测

这次我们来看一个在计算化学和材料科学领域极其关键的概念:过渡态(Transition State, TS)。对于从事催化、反应机理、材料设计等方向的研究者而言,过渡态计算是连接理论预测与实验现象的核心桥梁,也是高水平论文&#…

作者头像 李华
网站建设 2026/9/1 13:36:19

从Xiaomi miclaw封测看互联网产品封闭测试全流程技术实践

最近在关注小米生态链动态的朋友可能注意到了,小米官方发布了一款代号为“龙虾”的新产品——Xiaomi miclaw,并宣布其将于9月21日结束封测。这则消息在科技圈和开发者社区里激起了一些讨论,不少朋友好奇这到底是什么,对开发者意味…

作者头像 李华
网站建设 2026/9/1 13:30:25

AppSmith 零代码开发教程:30分钟从环境到数据仪表盘

AppSmith 零代码开发教程:30分钟从环境到数据仪表盘 【免费下载链接】appsmith Platform to build admin panels, internal tools, and dashboards. Integrates with 25 databases and any API. 项目地址: https://gitcode.com/GitHub_Trending/ap/appsmith …

作者头像 李华
网站建设 2026/9/1 13:29:56

Ghidra入门:从安装到脚本扩展的二进制逆向分析指南

在实际的软件逆向工程、恶意软件分析和二进制安全学习场景中,Ghidra 已经成为很多研究人员的首选工具之一。它由美国国家安全局(NSA)开源维护,是一套完整的软件逆向工程框架,内置了反汇编、反编译、脚本执行、二进制对…

作者头像 李华
网站建设 2026/9/1 13:27:41

DeepSeek Harness插件在政务门户中的集成实践与安全部署指南

1. 先搞清楚 DSH 插件到底是什么,以及它和政务门户能怎么结合看到“DSH插件开源”和“接入政务门户”这个标题,很多人的第一反应可能是:这又是一个AI大模型要接管政府网站了吗?其实不是。DeepSeek Harness (DSH)本身是一个AI应用开…

作者头像 李华