【问题标题】:Can't save Images using QImage无法使用 QImage 保存图像
【发布时间】:2022-11-14 00:58:10
【问题描述】:

我希望在 Qt 中使用 QImage 来加载和保存图像。虽然我可以加载图像,但无论出于何种原因,它都不会让我保存图像。

所以我开始编写一个简单的代码,使用 paint 制作了一个简单的 png 测试文件,并将其放入与项目本身相同的文件夹中。

#include <QImage>
#include <iostream>

int main(){
    QImage image;
    image.load("test.png");

    if (image.isNull()){
        std::cout << "ERROR!\n";
    }
    else{
        std::cout << "IMAGE LOADED!\n";
    }

    image.save("test1.png");

    return 0;
}

在运行程序期间,我收到“图像已加载!”的消息。从应用程序输出中,但是当我检查文件夹时,我希望保存为 test1.png 的相同图像根本不会出现。

那么,我如何实际保存图像?我错过了什么?

【问题讨论】:

  • 此代码按原样工作。我可以打开并保存图像。您可能需要仔细检查您是否正在查找正确的文件夹(影子构建等可能会造成混淆)。我使用 Qt Kit 版本 5.15.2。
  • “如果图像保存成功,则返回 true;否则返回 false。” - 你的image.save("test1.png"); 的返回值是多少?也许是只读工作目录或类似的东西。
  • @L.C.你的意思是新生成的文件应该与项目在同一个文件夹中?我以为它会在那里?我具体在哪里检查?
  • @pptaszni您的意思是 image.save() 函数的返回值?如果我使用以下代码`int i = image.save(string); std::cout << i << "\n";` 它返回一个 1。
  • @user19905318 当您从 IDE(应该是 Qt Creator?)运行应用程序时,工作目录在左侧“项目”选项卡的“运行设置”中设置。无论可执行文件放置在何处,您的应用程序都是从该路径启动的。因此,图像可能不会写入您期望的位置,而是写入那里设置的工作目录。在我的测试中,图像被写入影子构建文件夹中。

标签: c++ qt qimage


【解决方案1】:

在提到的其他 cmets 中,图像被保存到工作目录中,该目录与项目所在的文件夹不同。

在我的具体情况下,我通过向项目添加完整路径来获得图像,例如

int i = image.save("C:\Users\UserName\Documents\QT\testing_ground_cpp\" + string);

找到图像。

理想情况下,我应该直接访问工作目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-17
    • 2022-01-14
    • 2018-07-11
    • 1970-01-01
    • 2016-05-19
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多