【问题标题】:QImage from file content来自文件内容的 QImage
【发布时间】:2013-07-25 07:22:16
【问题描述】:

我的数据库中有一个表,其中包含有关图像的信息(如宽度、高度、内容类型、文件类型和文件内容)。在file_content 列中存储了整个图像(不是像素数据或其他东西 - 整个文件被读取并存储为二进制数据)。现在我想在 Python+PySide 上的应用程序中根据这条记录创建 QImage(或 QPixmap)。我该怎么做?

我尝试了 loadFromData,但它需要原始像素数据,而不是像我这样的带有标题的文件。

其实我也不知道怎么解决。

UPD:我的代码示例不起作用:

    with open('Koala.jpg', 'r') as f:
        content = f.read()

    self.image = QtGui.QImage()

    print self.image.loadFromData(content)

结果:

False
Corrupt JPEG data: 1 extraneous bytes before marker 0xd9
JPEG datastream contains no image

【问题讨论】:

  • loadFromData 应该可以工作,它不需要原始像素数据。你给它正确的图像格式吗?您是否确认您传入的数据确实代表了有效的图像?
  • @DanMilburn 我用不适合我的源代码更新了问题。无论哪种图像 - jpg 或 png,我尝试加载它总是失败。

标签: python qt pyside


【解决方案1】:

真是个愚蠢的错误!刚刚将with open('Koala.jpg', 'r') as f: 替换为with open('Koala.jpg', 'rb') as f:loadFromData 加载了我的图片。

永远不要忘记以二进制形式打开图像文件!

【讨论】:

    【解决方案2】:

    QImage::loadFromData

    请参阅docs

    【讨论】:

    • 感谢您对 C++ Qt 的引用,但是对于 Python 端口 Pyside,仅存在一种方法 loadFromData (srinikom.github.io/pyside-docs/PySide/QtGui/…),它返回 bool。无论如何,它不符合我更新的 waustion - 我添加了代码示例。
    猜你喜欢
    • 1970-01-01
    • 2021-06-04
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2018-07-16
    相关资源
    最近更新 更多