首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt6:如何在QImageReader中设置分配限制?

PyQt6:如何在QImageReader中设置分配限制?
EN

Stack Overflow用户
提问于 2022-03-13 17:03:20
回答 2查看 495关注 0票数 2

我正在更新一个从PyQt5到PyQt6的应用程序。应用程序使用非常大的图像文件。但是,我已经更新了使用PyQt6的代码,但是当我运行Python时,我现在得到了一个错误:

QImageIOHandler:当图像超过当前128兆字节的分配限制时拒绝它

看看这里的Qt6文档:QImageReader::setAllocationLimit()

...and这里:QImageReader::allocationLimit()

文档表明,可以使用setAllocationLimit来更改这个128 be的限制。

我的问题是,这些属性似乎没有出现在Python (PyQt6)中。下面是PyQt6和QImageReader类以及setAllocationLimit和AllocationLimit的文档:QImageReader

我遗漏了什么吗?我觉得如果我能在PyQt6中访问PyQt6,它可以解决我的问题,但我哪儿也找不到它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-13 18:53:38

如果使用的是PySide6,则可以禁用以下限制:

代码语言:javascript
复制
QtGui.QImageReader.setAllocationLimit(0)

也不需要别的了。

但是,对于PyQt-6.3.1和更早版本,这个API目前没有包装,这显然是一个bug。同时,一个解决办法是设置环境变量QT_IMAGEIO_MAXALLOC

代码语言:javascript
复制
>>> path = 'path/to/large-image.jpg'
>>> os.path.getsize(path) // 1024 // 1024
9
>>> r = QtGui.QImageReader(path)
>>> os.environ['QT_IMAGEIO_MAXALLOC'] = "1"
>>> r.read()
qt.gui.imageio: QImageIOHandler: Rejecting image as it exceeds the current allocation limit of 1 megabytes
>>> os.environ['QT_IMAGEIO_MAXALLOC'] = "10"
>>> r.read()
<PyQt6.QtGui.QImage object at 0x7f1d51857d10>

如果您想在下一个PyQt6版本中看到上面的错误,请在邮寄名单上报告。维护人员通常是非常亲主动的,所以应该很快修复(假设它是一个相对简单的添加)。

更新

由于OP没有执行上述建议,所以我发了一个请求添加了API。

票数 3
EN

Stack Overflow用户

发布于 2022-06-03 12:41:15

对于pyside6,所提出的解决方案不起作用。在pyside6文档中,我发现"QtGui.QImageReader.setAllocationLimit(0)“解决了我的问题

我写道:

代码语言:javascript
复制
from PySide6 import QtGui
os.environ['QT_IMAGEIO_MAXALLOC'] = "10000000000000000000000000000000000000000000000000000000000000000"
QtGui.QImageReader.setAllocationLimit(0)

在此之后,错误消失了,我能够将一个大的图像插入qlabel中。

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

https://stackoverflow.com/questions/71458968

复制
相关文章

相似问题

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