我有一个图像文件,C:/44637landscapes-2007.jpg
我想使用PySide
使用QPixmap
加载此文件
我尝试了以下。
pixmap = QPixmap('C:/44637landscapes-2007.jpg')
但文档说像QPixmap(':/xxxxxx.jpeg')
。 ':'
的含义是什么?
如何在'C:\'
处加载图片?
编辑:问题在于尝试加载"JPEG"
。它能够加载"PNG"
,没有任何问题。那么还有什么需要加载"JPEG"
?
由于 Jijoy
答案 0 :(得分:4)
您可以通过提供文件的路径名来构造QPixMap的实例。尝试代码时出现的错误是什么?将您的代码更改为:
pixmap = QPixMap(r'C:\filename.jpeg')
您所指的文档是加载Qt资源的方式。可以将应用程序所需的图像转换为Qt资源,以便以独立于平台的方式加载它。有关执行此操作的步骤,请参阅The Qt Resource System 文档。
答案 1 :(得分:4)
Qt对图像做了一些有点奇怪的事情。如果你只使用png,你将永远不会有问题。处理其他图像格式的方式略有不同。
如果您查看Qt目录(所有二进制文件和源代码所在的位置),您将找到一个名为plugins\imageformats
的目录
在该目录中,Qt支持的每种图像格式都有大量的dlls
(或.so
)。在你的情况下,我认为你感兴趣的是qjpeg4.dll
现在,当您运行应用程序并尝试使用jpeg
时,Qt会尝试加载此插件,但如果找不到它,则您的图像将不会显示。
我们在ico文件中遇到了类似的问题。它在我们的开发环境中工作,因为Qt文件夹在我们的PATH,
中,因此它神奇地发现了这个插件。但是,当我们发布我们的软件时,我们只分发我们需要的那些dll,因此它不起作用。
经过多次调查,这就是我们所做的:
我们的应用程序位于bin /目录中。这是exe和所有Qt dll的放置位置。 QtCore4.dll
和QtGui4.dll
等......
在bin目录下,我们创建了一个名为'imageformats'
放置qjpeg4.dll
以及您可能需要的任何其他图片插件。
更改代码如下:
QApplication _App(argc, argv);
// Find the path of your bin directory - whereever your exe resides.
QString _Path = _PathToBin + QString(QDir::separator()) + "imageformats");
// This line is providing a path to Qt telling it to look here for plugins
QApplication::addLibraryPath(_Path);
// Initialize the main form
return _App.exec();
这应该确保Qt知道jpeg
处理插件,并将您的图片加载到UI
。
答案 2 :(得分:3)
如果您正在尝试将Python代码构建为可执行文件,则会解决.ico文件的问题,但JPEG的过程相同: PyQt/PySide - icon display
如果从安装的解释器运行时遇到问题,那么路径变量可能没有正确设置,你的qt.conf(在基础python目录中)已被删除/更改,或者你没有qjpeg4。 dll应该在哪里(<python dir>\Lib\site-packages\PySide\plugins\imageformats
)。
我的qt.conf看起来像:
[Paths]
Prefix = C:/Python27/lib/site-packages/PySide
Binaries = .
Plugins = plugins
Translation = translation
C:/Python27/lib/site-packages/PySide
是我的系统PATH变量的一部分,并且是任何PyQt(或其他Qt)目录的提前。