1

我在 Gtk3 中加载 PNG 图像时遇到问题。我在我的 ToolButtons 中损坏了图像符号,经过一番调查,它似乎来自 GdkPixbuf 无法读取 PNG 文件。

我已经用 python 控制台重现了这个问题

>>> from gi.repository import GdkPixbuf
>>> print(GdkPixbuf)
<gi.module.DynamicModule 'GdkPixbuf' from '/home/user1/ctcils/dusserm/applications/gobject-introspection/1.40.0/lib/girepository-1.0/GdkPixbuf-2.0.typelib'>
>>> GdkPixbuf.Pixbuf.new_from_file("/home/user1/ctcils/dusserm/applications/pycharm-community-3.4.1/bin/pycharm.png")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
gi._glib.GError: Couldn't recognize the image file format for file '/home/user1/ctcils/dusserm/applications/pycharm-community-3.4.1/bin/pycharm.png'

我在最后几天遇到的许多问题是由于我们必须编译 Gtk3、pygobject 及其所有依赖项并将它们安装在非标准目录中。我怀疑 gobject 内省存在问题(长列表中的最后一个)。

4

3 回答 3

1

不是完整的答案,而是一些调试提示:检查 gdk-pixbuf 提供的图像加载器(另请参阅Gdk-Pixbuf (Gtk-Image?) 默认支持哪些图像格式?)。一个 Python 片段来检查这个:

from gi.repository import GdkPixbuf
for fmt in GdkPixbuf.Pixbuf.get_formats():
    print(fmt.get_extensions())

如果没有显示,gdk-pixbuf 没有找到任何可能与安装位置有关的加载程序(--prefix 和/或--libdir 配置选项)。验证您已将加载程序安装到 gdk-pixbuf 期望找到它们的位置(尤其是 png 加载程序)。这应该类似于:<prefix>/lib[64]/gdk-pixbuf-2.0/<version>/loaders

另见:https ://developer.gnome.org/gdk-pixbuf/stable/gdk-pixbuf-query-loaders.html

于 2014-08-06T02:53:12.533 回答
0

我遇到了一个带有异常前缀的类似错误,并通过XDG_DATA_DIRS我没有设置的设置解决了它。

export XDG_DATA_DIRS=.../usr/share

来源:https ://bugs.gentoo.org/644136

于 2020-09-26T22:36:44.853 回答
-1

似乎问题出在PNG库本身。考虑到它来自常规的 CentOS rpm libpng-1.2.49-1.el6_2.x86_64 并且 PNG 是多年来的稳定标准,我感到非常惊讶。此外,我认为使用相同库的 GTK2 没有问题......

无论如何,我从源代码编译了一个明亮的新 libpng 1.6.2,我重新配置并重新安装了 gdk-pixbuf,现在它可以工作了。

于 2014-08-06T09:47:22.717 回答