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

使用lodepng解码PNG图片时出现错误,请求技术支持

问题分析与解决方案

嘿,我看出来你代码里的问题啦——你调用lodepng::decode的时候,错误地把width和height转成临时的unsigned值传进去了,但lodepng的这个解码函数需要这两个参数是可修改的引用,用来返回图片实际的宽高。临时值没法被函数修改,这就是触发错误的核心原因。

而且你一开始把宽高硬设为256也没必要,函数会自动把图片真实的宽高赋值给这两个变量,根本不需要提前指定。

修正后的代码示例

#include <vector>
#include <lodepng.h>
#include <iostream>

int main() {
    const char* path = "image.png";
    unsigned width = 0, height = 0; // 初始化为0即可,函数会填充实际尺寸
    std::vector<unsigned char> image;
    
    unsigned error = lodepng::decode(image, width, height, path);
    
    // 一定要加错误检查,能帮你快速定位问题
    if(error) {
        std::cout << "解码出错:" << lodepng_error_text(error) << std::endl;
    } else {
        std::cout << "图片解码成功!宽:" << width << ",高:" << height << std::endl;
        // 这里可以处理解码后的像素数据啦
    }
    
    return 0;
}

关键修正点

  • 删掉unsigned(width)和unsigned(height)的强制转换,直接传width和height变量(注意它们的类型必须是unsigned,和函数参数要求匹配)
  • 不需要提前把宽高设为256,函数会自动把图片的真实宽高赋值给这两个变量
  • 加上错误检查逻辑,用lodepng_error_text(error)能拿到更具体的错误描述,比单纯的错误码好用多了

你对比官方示例代码就会发现,人家也是直接传unsigned类型的宽高变量当引用参数,和咱们修正后的逻辑完全一致~

内容的提问来源于stack exchange,提问作者user3684950

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:18:32