首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Gdk::Pixbuf::create_from_resource打开png图像时出错

用Gdk::Pixbuf::create_from_resource打开png图像时出错
EN

Stack Overflow用户
提问于 2022-07-18 12:44:17
回答 1查看 54关注 0票数 0

我正在尝试用Gdk::Pixbuf::create_from_resource读取png图像:

代码语言:javascript
复制
#include <iostream>
#include <gtkmm.h>

int main(int argc, char *argv[])
{
    auto app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");

    Gtk::Window window;
    window.set_default_size(100, 100);

    try  {
        Glib::RefPtr<Gdk::Pixbuf> image
            = Gdk::Pixbuf::create_from_resource("image.png");
    } catch (const Glib::Error &error) {
        std::cerr << "Failed to load an image: " << error.what() << std::endl;
    }

    return app->run(window);
}

但是出现了一个错误:

代码语言:javascript
复制
 $ ./a.out 
Failed to load an image: The resource at “image.png” does not exist
 $ ls -l
total 128
-rwxrwxr-x. 1 user user 36528 Jul 18 15:01 a.out
-rw-r--r--. 1 user user 88792 Jul 18 15:00 image.png
-rw-r--r--. 1 user user   449 Jul 18 15:00 main.cpp

gtkmm版本3.24.6

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-18 13:11:46

如果希望直接将图像文件加载到程序中,而不是:

代码语言:javascript
复制
Glib::RefPtr<Gdk::Pixbuf> image
        = Gdk::Pixbuf::create_from_resource("image.png");

您将使用以下语句:

代码语言:javascript
复制
Glib::RefPtr<Gdk::Pixbuf> image
        = Gdk::Pixbuf::create_from_file("image.png");

如果您确实希望将映像文件用作资源,那么首先需要使用资源定义XML文件生成一个具有“glib编译资源”函数的资源文件。例如。

代码语言:javascript
复制
glib-compile-resources --target=image.c --generate-source resource.xml

在XML文件中,可能会有某种类型的定义,如以下所示。

代码语言:javascript
复制
<gresources>
    <gresource prefix="Image">
        <file preprocess="xml-stripblanks">image.png</file>
    </gresource>
</gresources>

然后,在您的程序中,您的创建语句将类似于以下内容。

代码语言:javascript
复制
Glib::RefPtr<Gdk::Pixbuf> image = Gdk::Pixbuf::create_from_resource("Image/image.png");

最后,您将修改编译命令,将生成的资源文件包含在"main.cpp“文件中,以创建程序。

代码语言:javascript
复制
g++ -Wno-format -o a.out main.cpp image.c `pkg-config --cflags --libs gtkmm-3.0` `pkg-config --cflags --libs gdkmm-3.0`

希望能澄清一切。

致以问候。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73022498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档