Skip to content

Commit 7ebe5ee

Browse files
committed
compat.py: Add utility function to get raw bytes from QImages
1 parent 0f7b181 commit 7ebe5ee

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

qtpy/compat.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
PYQT6,
1313
PYSIDE2,
1414
PYSIDE6,
15+
QtBindingsNotFoundError,
1516
)
1617
from .QtWidgets import QFileDialog
1718

@@ -200,3 +201,14 @@ def isalive(obj):
200201

201202
return shiboken.isValid(obj)
202203
return None
204+
205+
206+
# =============================================================================
207+
def getimagebytes(qimage):
208+
if PYQT5:
209+
return qimage.bits().asstring(qimage.byteCount())
210+
if PYQT6:
211+
return qimage.bits().asstring(qimage.sizeInBytes())
212+
if PYSIDE2 or PYSIDE6:
213+
return qimage.bits().tobytes()
214+
raise QtBindingsNotFoundError

qtpy/tests/test_compat.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
"""Test the compat module."""
2+
23
import sys
34

45
import pytest
56

67
from qtpy import QtWidgets, compat
8+
from qtpy.QtCore import QRectF, QSize, Qt
9+
from qtpy.QtGui import QBrush, QImage, QPainter
710
from qtpy.tests.utils import not_using_conda
811

912

@@ -22,3 +25,10 @@ def test_isalive(qtbot):
2225
with qtbot.waitSignal(test_widget.destroyed):
2326
test_widget.deleteLater()
2427
assert compat.isalive(test_widget) is False
28+
29+
30+
def test_getimagebytes(qtbot):
31+
"""Test compat.getimagebytes"""
32+
image = QImage(QSize(100, 100), QImage.Format_RGB32)
33+
_bytes = compat.getimagebytes(image)
34+
assert len(_bytes) == 100 * 100 * 4

0 commit comments

Comments
 (0)