先记住一句话:
stbi_load本身只有几行:打开文件,交给一个统一的“读取上下文”,然后依次试探 PNG、BMP、GIF、JPEG 等格式,认出来就交给对应的解码器,解码完再做统一的后处理(转换通道数、16 位转 8 位、上下翻转),最后返回一块malloc出来的像素内存。真正复杂的是中间的解码器,比如 PNG 要解压 zlib、反滤波,JPEG 要做 Huffman 解码、反量化、IDCT 和颜色转换。
📌 本文以 stb_image v2.2x 系列为准,代码是简化自源码的版本,省略了部分宏和边界处理。不同版本的细节会略有差异,以你手上的
stb_image.h为准。
一、先看全景:一次调用经过了哪些函数
intw,h,n;unsignedchar