问题标签 [gdkpixbuf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1065 浏览

python - 如何更改 GtkImage 显示的图像?

在我的程序中,我想通过单击按钮来更改图像,但找不到该功能

非常感谢您的帮助

0 投票
1 回答
170 浏览

c++ - 在 gtkmm 中找不到 GDK::InterpType 成员

我试图让Gtk::Image小部件显示文件中的图片,但阻止小部件扩大大小,所以我从 a 加载它Gdk::Pixbuf然后缩放图片。我使用Gdk::Pixbuf而不是GdkPixBuf因为后者适用于常规指针,但Gtk::Image需要一个Glib::RefPtr<Gdk::Pixbuf>. (只是提到所有这些,以防有更好的方法来实现我不知道的我正在做的事情。)

无论如何,问题是虽然我正在关注文档Gdk::Pixbuf,但我的代码中的第 2 行会生成错误:

相反,尝试GDK_INTERP_NEAREST也会导致错误。:(

0 投票
1 回答
92 浏览

dbus - Saving a GdkPixbuf from a DBus client/server result in different files

I have a DBus service that creates a Variant type for a Pixbuf file that when saved on either side gives two different files, despite the data being the same. The image saved from the server side is correct, the one on the client side shows the top 1/3 correct, middle 1/3 shifted horizontally by 1/3 of the width and the colors are wonky, and the bottom 1/3 shifted by 2/3 the width and has different wonky colors.

The Variant on the server side is created thusly

and unpacked by the client using

On both sides I print things about the pixbuf, including a checksum. The server side gives

and the client

Everything is definitely the same, the call to save the image for both is

This has been tested and wonkiness has been verified on three different computers. I will provide a complete example, likely tomorrow. I just wanted to put this out there first without it in case someone has come across this before.

0 投票
1 回答
297 浏览

c - GDK:如何刷新透明背景?

在纯 GDK 3.10(无 GTK)项目中,如何刷新/清除/重绘 GdkWindow 的透明背景?

test.c会在初始化(gdk_window_show())时正确设置背景,当我对窗口进行图标化+去图标化但不是在调整大小或通过鼠标移动它时:

gcc 构建命令

结果:

在此处输入图像描述

注意:我的目标是 X11,所以我也可以包含 Xlib 或GDK X11 后端函数。

感谢您的任何帮助或指点。

0 投票
1 回答
190 浏览

haskell - gtk 窗口停止更新,即使应用程序似乎正在运行

我维护了一个 gtk3(虽然是 gtk2hs 和 gi-gtk 的混合体)应用程序,该应用程序用作名为 taffybar 的平铺窗口管理器的独立状态栏。

Taffybar 有一个长期存在的错误,即发生某些事情会导致它的一个窗口(它可以有多个窗口,例如在多个显示器上显示时)完全停止更新(在此处发布)。我已经通过各种日志记录机制验证了应该更新窗口的代码实际上仍在继续运行。此外,如果 taffybar 在多个窗口上显示,则窗口将一次受到一个影响——也就是说,挂起似乎只影响它发生的窗口,这排除了 UI 线程上发生的任何奇怪的事情或类似的事情.

不幸的是,我没有一致的方法来重现该问题。更糟糕的是,我什至无法想出一种以编程方式检测问题的方法。话虽如此,由于最近添加了新的图标加载机制(在最新版本中似乎每 5 分钟发生一次),问题变得更糟,因此相对容易发生问题。这提醒我,我应该提到的另一件事是,我相对确定该问题与 pixbufs 和图像显示有关,因为我从未见过在工作区图像模块未激活时发生此问题。

我讨厌在甚至无法提供重现问题的一致方法的情况下提出问题,但我对如何解决/调试此问题感到茫然。我很难想象我所描述的行为实际上是如何可能的。我希望关于问题的特殊性质的一些事情可能足以让比我更了解 gtk 的人对问题可能是什么做出一些猜测。

为了使我的问题尽可能明确,我将其表述如下:

什么会导致 gtk 应用程序窗口挂起(停止更新)而不使应用程序或 UI 线程崩溃,或影响应用程序创建的任何其他窗口?

编辑:这个错误的一个更有趣的怪癖是,即使窗口停止更新,它仍然响应鼠标输入。

EDIT2:另一件值得注意的事情是,偶尔,我收到了这样的消息:

当我尝试在代码中销毁挂起的窗口时,我还收到以下消息:

我有时会从图标主题加载图标

0 投票
0 回答
69 浏览

python - 如何屏蔽/取消屏蔽 GdkPixbuf 的某些显示区域?

我有一个从 svg 文件(环境 - Python3.7;Linux)加载的 GdkPixbuf 数据结构。根据 svg 中不同对象 id 的区域,我想屏蔽/取消屏蔽 GdkPixBuf 图像。

我已经搜索了 Gtk、Gdk 和 GdkPixbuf 的 python 绑定,但没有任何运气。欢迎任何建议。

示例代码:

mask_pixbuf函数应返回掩码 PixBuf(原始大小),其中只有以 (100,120) 为中心的大小为 20 x 10 的矩形区域可见。返回的 pixbuf 的其他部分预计是透明的。

0 投票
1 回答
96 浏览

python - 在 Python3 中腌制一个 GdkPixbuf.Pixbuf 对象

我想GdkPixbuf.Pixbuf在 Python3 中腌制和解开 a 。更具体地说multiprocessing,Python3 的包需要这样做,因为我通过Queue.

问题是对象从

这是最小的工作示例。

我看不到其他腌制方法。图标需要在单独的进程中加载​​(在不同的 CPU 内核上,然后是应用程序主/第一个进程),然后应传输到主进程。这是通过Queue腌制所有数据来完成的。

0 投票
1 回答
214 浏览

c++ - 使用 Gdk::Pixbuf 创建的图像在显示时出现乱码

  1. 我正在尝试在窗口中显示图像。
  2. 我将 C++ 与 Gtkmm 和 Gdkmm 库一起使用。
  3. 我从磁盘读取图像并创建一个 Gdk::Pixbuf
  4. 然后我将它显示在一个小部件中。这是我在屏幕上看到的:

在此处输入图像描述

  1. 实际图像应该如下所示:

在此处输入图像描述

C++中的代码如下:


以下是一些背景信息:

  1. 保存的 PNG 文件没有乱码 - 它看起来应该是这样!问题似乎只是与显示器有关。

  2. 我在两个系统(MacOS 和 Debian)上尝试了相同的代码。问题仅在 Debian 系统上(MacOS 显示右图)。

  3. 我在两个系统中使用相同的库,但 g++ 编译器的版本不同。

  4. 如果我从 PNG 文件创建 Pixbuf,则显示的图像再次正确。


有没有办法解决问题?我错过了什么吗?

0 投票
1 回答
122 浏览

c - 位图加载镜像和反转

CF_DIB从剪贴板获取 a 然后调用:

从像素数据中创建一个 GdkPixbuf。然而,图像似乎倒置并镜像倒置(我认为它是 BGR)。

如何正确创建 pixbuf?

0 投票
0 回答
56 浏览

python - GdkPixbuf Linux 依赖项

GdkPixBuf.pixbuf_get_from_window()在我的Linux Manjaro (Cinnamon)机器上不起作用。下面的代码(仅截图部分)在我的旧Manjaro安装中确实可以完美地截取屏幕截图,但最近我重新安装了,现在相同的代码不起作用。我什至在Linux Mint (Cinnamon)中尝试了相同的代码,但它在那里也不起作用。

当我使用 Visual Studio Code 运行/调试代码时,代码中没有出现异常,.xsession-errors中没有任何内容,journalctl日志中也没有任何内容。

所以我只能猜测我在旧机器上安装的新机器上缺少一些依赖项,但是如果没有错误消息,很难找出缺少的内容。当我从终端运行应用程序时,我没有得到任何输出。该应用程序工作正常,除了屏幕截图部分。

当然,我已经在我的虚拟环境中安装了PyGObjectPyCairo 。因此,我必须缺少另一个依赖项,有人知道缺少什么吗?

[编辑] 我不知道这是我的虚拟环境的问题(我需要的pip install东西)还是我的机器上缺少的东西(我需要的东西sudo pacman -S)。当我让它在我的旧机器上运行时,我真的刚刚了解了虚拟环境和 python(尽管仍然是一个新手),所以它可能因为我在全球范围内安装了一些东西而一直在运行。