don't rely on QImage being non-const
the previous formulation creates an ndarray and then creates an QImage over it w/o copying. this relies on the QImage thus created being non-const. if the QImage was (unintentionally) created as const, the subsequent QPainter render on the const QImage would trigger a COW. i.e. the original underlying ndarray wouldn't be updated. this is only an issue for PyQt bindings where const QImages can be created.
This commit is contained in:
parent
6c8e07c377
commit
659392d4bb
@ -137,12 +137,14 @@ def assertImageApproved(image, standardFile, message=None, **kwargs):
|
|||||||
QtGui.QApplication.processEvents()
|
QtGui.QApplication.processEvents()
|
||||||
|
|
||||||
graphstate = scenegraphState(w, standardFile)
|
graphstate = scenegraphState(w, standardFile)
|
||||||
image = np.zeros((w.height(), w.width(), 4), dtype=np.ubyte)
|
qimg = QtGui.QImage(w.size(), QtGui.QImage.Format.Format_ARGB32)
|
||||||
qimg = fn.makeQImage(image, alpha=True, copy=False, transpose=False)
|
qimg.fill(QtCore.Qt.GlobalColor.transparent)
|
||||||
painter = QtGui.QPainter(qimg)
|
painter = QtGui.QPainter(qimg)
|
||||||
w.render(painter)
|
w.render(painter)
|
||||||
painter.end()
|
painter.end()
|
||||||
|
|
||||||
|
image = fn.imageToArray(qimg, copy=False, transpose=False)
|
||||||
|
|
||||||
# transpose BGRA to RGBA
|
# transpose BGRA to RGBA
|
||||||
image = image[..., [2, 1, 0, 3]]
|
image = image[..., [2, 1, 0, 3]]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user