【问题标题】:C++ SDL2 Image Loading different formats than .bmpC++ SDL2 图像加载不同于 .bmp 的格式
【发布时间】:2024-05-04 16:50:02
【问题描述】:

前段时间我问了一个类似的问题,我问我如何使用 SDL2_image.h 加载不同的格式,它帮助我在我的 SDL 程序中加载图像。现在出现的问题是当我尝试加载格式与“.bmp”不同的文件时。

例如 - 这段代码运行良好,

Img = IMG_LoadTexture(renderer, "./image.bmp");
SDL_QueryTexture(Img, NULL, NULL, &w, &h);
rectImg.x = 0; rectImg.y = 0; rectImg.w = w / 2; rectImg.h = h / 2;

if (Img == NULL) {
    std::cout << "failed to load image";
}

这会在控制台中打印“加载图像失败”。

Img = IMG_LoadTexture(renderer, "./image.jpg");
SDL_QueryTexture(Img, NULL, NULL, &w, &h);
rectImg.x = 0; rectImg.y = 0; rectImg.w = w / 2; rectImg.h = h / 2;

if (Img == NULL) {
    std::cout << "failed to load image";
}

图像在同一个文件夹中,但在第二种情况下我收到错误消息。 SDL2 图像无法加载这些类型的文件还是我做错了什么?

【问题讨论】:

    标签: c++ image sdl-2


    【解决方案1】:

    您似乎缺少处理压缩格式所需的初始化代码:

    IMG_Init(IMG_INIT_JPG | IMG_INIT_PNG);
    

    【讨论】:

    • 当我尝试使用它时找不到指定的模块,这是我必须下载的 SDL2_Image 之外的东西吗?
    • @darclader SDL2_image 二进制发行版附带 libjpeg、libpng、... 动态库,并且仅在通过 IMG_Init 请求时才加载它们。您需要将所需的库放入库搜索路径(或者很可能与您的可执行文件所在的目录相同)。
    • Libjpeg 和 libpng 已经在指定的搜索路径中,但是当我使用您提供给我的代码 + 错误处理事件运行程序时,我收到错误消息“找不到 libjpeg-9.dll” ,但它们在上面提到的指定路径中......
    • @darclader 你确定 libjpeg 具有与可执行文件相同的平台配置(32/64 位)吗?
    • @VTT 我怎么能看到?
    最近更新 更多