QPixmap¶
The QPixmap
class is an off-screen image representation that can be used as a paint device. More…
Inherited by: QBitmap
Synopsis¶
Functions¶
def
cacheKey
()def
convertFromImage
(img[, flags=Qt.AutoColor])def
copy
([rect=QRect()])def
copy
(x, y, width, height)def
createHeuristicMask
([clipTight=true])def
createMaskFromColor
(maskColor[, mode=Qt.MaskInColor])def
deviceIndependentSize
()def
fill
([fillColor=Qt.white])def
hasAlpha
()def
hasAlphaChannel
()def
isNull
()def
isQBitmap
()def
load
(fileName[, format=None[, flags=Qt.AutoColor]])def
loadFromData
(buf[, format=None[, flags=Qt.AutoColor]])def
loadFromData
(data[, format=None[, flags=Qt.AutoColor]])def
mask
()def
rect
()def
save
(device[, format=None[, quality=-1]])def
save
(fileName[, format=None[, quality=-1]])def
scaled
(s[, aspectMode=Qt.IgnoreAspectRatio[, mode=Qt.FastTransformation]])def
scaled
(w, h[, aspectMode=Qt.IgnoreAspectRatio[, mode=Qt.FastTransformation]])def
scaledToHeight
(h[, mode=Qt.FastTransformation])def
scaledToWidth
(w[, mode=Qt.FastTransformation])def
scroll
(dx, dy, rect[, exposed=None])def
scroll
(dx, dy, x, y, width, height[, exposed=None])def
setDevicePixelRatio
(scaleFactor)def
setMask
(arg__1)def
size
()def
swap
(other)def
toImage
()def
transformed
(arg__1[, mode=Qt.FastTransformation])
Static functions¶
def
defaultDepth
()def
fromImage
(image[, flags=Qt.AutoColor])def
fromImageInPlace
(image[, flags=Qt.AutoColor])def
fromImageReader
(imageReader[, flags=Qt.AutoColor])def
trueMatrix
(m, w, h)
Detailed Description¶
Qt provides four classes for handling image data: QImage
, QPixmap
, QBitmap
and QPicture
. QImage
is designed and optimized for I/O, and for direct pixel access and manipulation, while QPixmap
is designed and optimized for showing images on screen. QBitmap
is only a convenience class that inherits QPixmap
, ensuring a depth of 1. The isQBitmap()
function returns true
if a QPixmap
object is really a bitmap, otherwise returns false
. Finally, the QPicture
class is a paint device that records and replays QPainter
commands.
A QPixmap
can easily be displayed on the screen using QLabel
or one of QAbstractButton
‘s subclasses (such as QPushButton
and QToolButton
). QLabel
has a pixmap property, whereas QAbstractButton
has an icon property.
QPixmap
objects can be passed around by value since the QPixmap
class uses implicit data sharing. For more information, see the Implicit Data Sharing documentation. QPixmap
objects can also be streamed.
Note that the pixel data in a pixmap is internal and is managed by the underlying window system. Because QPixmap
is a QPaintDevice
subclass, QPainter
can be used to draw directly onto pixmaps. Pixels can only be accessed through QPainter
functions or by converting the QPixmap
to a QImage
. However, the fill()
function is available for initializing the entire pixmap with a given color.
There are functions to convert between QImage
and QPixmap
. Typically, the QImage
class is used to load an image file, optionally manipulating the image data, before the QImage
object is converted into a QPixmap
to be shown on screen. Alternatively, if no manipulation is desired, the image file can be loaded directly into a QPixmap
.
QPixmap
provides a collection of functions that can be used to obtain a variety of information about the pixmap. In addition, there are several functions that enables transformation of the pixmap.
Reading and Writing Image Files¶
QPixmap
provides several ways of reading an image file: The file can be loaded when constructing the QPixmap
object, or by using the load()
or loadFromData()
functions later on. When loading an image, the file name can either refer to an actual file on disk or to one of the application’s embedded resources. See The Qt Resource System overview for details on how to embed images and other resource files in the application’s executable.
Simply call the save()
function to save a QPixmap
object.
The complete list of supported file formats are available through the supportedImageFormats()
and supportedImageFormats()
functions. New file formats can be added as plugins. By default, Qt supports the following formats:
Format
Description
Qt’s support
BMP
Windows Bitmap
Read/write
GIF
Graphic Interchange Format (optional)
Read
JPG
Joint Photographic Experts Group
Read/write
JPEG
Joint Photographic Experts Group
Read/write
PNG
Portable Network Graphics
Read/write
PBM
Portable Bitmap
Read
PGM
Portable Graymap
Read
PPM
Portable Pixmap
Read/write
XBM
X11 Bitmap
Read/write
XPM
X11 Pixmap
Read/write
Pixmap Information¶
QPixmap
provides a collection of functions that can be used to obtain a variety of information about the pixmap:
Available Functions
Geometry
The
size()
,width()
andheight()
functions provide information about the pixmap’s size. Therect()
function returns the image’s enclosing rectangle.Alpha component
The
hasAlphaChannel()
returnstrue
if the pixmap has a format that respects the alpha channel, otherwise returnsfalse
. ThehasAlpha()
,setMask()
andmask()
functions are legacy and should not be used. They are potentially very slow.The
createHeuristicMask()
function creates and returns a 1-bpp heuristic mask (i.e. aQBitmap
) for this pixmap. It works by selecting a color from one of the corners and then chipping away pixels of that color, starting at all the edges. ThecreateMaskFromColor()
function creates and returns a mask (i.e. aQBitmap
) for the pixmap based on a given color.Low-level information
The
depth()
function returns the depth of the pixmap. ThedefaultDepth()
function returns the default depth, i.e. the depth used by the application on the given screen.The
cacheKey()
function returns a number that uniquely identifies the contents of theQPixmap
object.
Pixmap Conversion¶
A QPixmap
object can be converted into a QImage
using the toImage()
function. Likewise, a QImage
can be converted into a QPixmap
using the fromImage()
. If this is too expensive an operation, you can use fromImage()
instead.
To convert a QPixmap
to and from HICON you can use the QtWinExtras functions QtWin::toHICON() and QtWin::fromHICON() respectively.
Pixmap Transformations¶
QPixmap
supports a number of functions for creating a new pixmap that is a transformed version of the original:
The scaled()
, scaledToWidth()
and scaledToHeight()
functions return scaled copies of the pixmap, while the copy()
function creates a QPixmap
that is a plain copy of the original one.
The transformed()
function returns a copy of the pixmap that is transformed with the given transformation matrix and transformation mode: Internally, the transformation matrix is adjusted to compensate for unwanted translation, i.e. transformed()
returns the smallest pixmap containing all transformed points of the original pixmap. The static trueMatrix()
function returns the actual matrix used for transforming the pixmap.
See also
- class PySide6.QtGui.QPixmap¶
PySide6.QtGui.QPixmap(image)
PySide6.QtGui.QPixmap(arg__1)
PySide6.QtGui.QPixmap(arg__1)
PySide6.QtGui.QPixmap(fileName[, format=None[, flags=Qt.AutoColor]])
PySide6.QtGui.QPixmap(xpm)
PySide6.QtGui.QPixmap(w, h)
- Parameters
h – int
flags –
ImageConversionFlags
fileName – str
xpm –
char[]
image –
PySide6.QtGui.QImage
w – int
format – str
arg__1 –
PySide6.QtGui.QPixmap
Constructs a null pixmap.
See also
This is an overloaded function.
Constructs a pixmap of the given size
.
Warning
This will create a QPixmap
with uninitialized data. Call fill()
to fill the pixmap with an appropriate color before drawing onto it with QPainter
.
Constructs a pixmap from the file with the given fileName
. If the file does not exist or is of an unknown format, the pixmap becomes a null pixmap.
The loader attempts to read the pixmap using the specified format
. If the format
is not specified (which is the default), the loader probes the file for a header to guess the file format.
The file name can either refer to an actual file on disk or to one of the application’s embedded resources. See the Resource System overview for details on how to embed images and other resource files in the application’s executable.
If the image needs to be modified to fit in a lower-resolution result (e.g. converting from 32-bit to 8-bit), use the flags
to control the conversion.
The fileName
, format
and flags
parameters are passed on to load()
. This means that the data in fileName
is not compiled into the binary. If fileName
contains a relative path (e.g. the filename only) the relevant file must be found relative to the runtime working directory.
See also
Reading and Writing Image Files
Constructs a pixmap with the given width
and height
. If either width
or height
is zero, a null pixmap is constructed.
Warning
This will create a QPixmap
with uninitialized data. Call fill()
to fill the pixmap with an appropriate color before drawing onto it with QPainter
.
See also
- PySide6.QtGui.QPixmap.cacheKey()¶
- Return type
int
Returns a number that identifies this QPixmap
. Distinct QPixmap
objects can only have the same cache key if they refer to the same contents.
The will change when the pixmap is altered.
- PySide6.QtGui.QPixmap.convertFromImage(img[, flags=Qt.AutoColor])¶
- Parameters
img –
PySide6.QtGui.QImage
flags –
ImageConversionFlags
- Return type
bool
Replaces this pixmap’s data with the given image
using the specified flags
to control the conversion. The flags
argument is a bitwise-OR of the ImageConversionFlags
. Passing 0 for flags
sets all the default options. Returns true
if the result is that this pixmap is not null.
Note: this function was part of Qt 3 support in Qt 4.6 and earlier. It has been promoted to official API status in 4.7 to support updating the pixmap’s image without creating a new QPixmap
as fromImage()
would.
See also
- PySide6.QtGui.QPixmap.copy([rect=QRect()])¶
- Parameters
rect –
PySide6.QtCore.QRect
- Return type
Returns a deep copy of the subset of the pixmap that is specified by the given rectangle
. For more information on deep copies, see the Implicit Data Sharing documentation.
If the given rectangle
is empty, the whole image is copied.
See also
operator=()
QPixmap()
Pixmap Transformations
- PySide6.QtGui.QPixmap.copy(x, y, width, height)
- Parameters
x – int
y – int
width – int
height – int
- Return type
This is an overloaded function.
Returns a deep copy of the subset of the pixmap that is specified by the rectangle QRect
( x
, y
, width
, height
).
- PySide6.QtGui.QPixmap.createHeuristicMask([clipTight=true])¶
- Parameters
clipTight – bool
- Return type
Creates and returns a heuristic mask for this pixmap.
The function works by selecting a color from one of the corners and then chipping away pixels of that color, starting at all the edges. If clipTight
is true (the default) the mask is just large enough to cover the pixels; otherwise, the mask is larger than the data pixels.
The mask may not be perfect but it should be reasonable, so you can do things such as the following:
myPixmap = QPixmap() myPixmap.setMask(myPixmap.createHeuristicMask())
This function is slow because it involves converting to/from a QImage
, and non-trivial computations.
- PySide6.QtGui.QPixmap.createMaskFromColor(maskColor[, mode=Qt.MaskInColor])¶
- Parameters
maskColor –
PySide6.QtGui.QColor
mode –
MaskMode
- Return type
Creates and returns a mask for this pixmap based on the given maskColor
. If the mode
is MaskInColor
, all pixels matching the maskColor will be transparent. If mode
is MaskOutColor
, all pixels matching the maskColor will be opaque.
This function is slow because it involves converting to/from a QImage
.
- static PySide6.QtGui.QPixmap.defaultDepth()¶
- Return type
int
Returns the default pixmap depth used by the application.
On all platforms the depth of the primary screen will be returned.
Note
QGuiApplication
must be created before calling this function.
See also
depth()
depth()
Pixmap Information
- PySide6.QtGui.QPixmap.deviceIndependentSize()¶
- Return type
Returns the size of the pixmap in device independent pixels.
This value should be used when using the pixmap size in user interface size calculations.
The return value is equivalent to pixmap. size()
/ pixmap. devicePixelRatio()
,
- PySide6.QtGui.QPixmap.fill([fillColor=Qt.white])¶
- Parameters
fillColor –
PySide6.QtGui.QColor
Fills the pixmap with the given color
.
The effect of this function is undefined when the pixmap is being painted on.
See also
Pixmap Transformations
- static PySide6.QtGui.QPixmap.fromImage(image[, flags=Qt.AutoColor])¶
- Parameters
image –
PySide6.QtGui.QImage
flags –
ImageConversionFlags
- Return type
- static PySide6.QtGui.QPixmap.fromImageInPlace(image[, flags=Qt.AutoColor])¶
- Parameters
image –
PySide6.QtGui.QImage
flags –
ImageConversionFlags
- Return type
- static PySide6.QtGui.QPixmap.fromImageReader(imageReader[, flags=Qt.AutoColor])¶
- Parameters
imageReader –
PySide6.QtGui.QImageReader
flags –
ImageConversionFlags
- Return type
Create a QPixmap
from an image read directly from an imageReader
. The flags
argument is a bitwise-OR of the ImageConversionFlags
. Passing 0 for flags
sets all the default options.
On some systems, reading an image directly to QPixmap
can use less memory than reading a QImage
to convert it to QPixmap
.
See also
fromImage()
toImage()
Pixmap Conversion
- PySide6.QtGui.QPixmap.hasAlpha()¶
- Return type
bool
Returns true
if this pixmap has an alpha channel, or has a mask, otherwise returns false
.
See also
- PySide6.QtGui.QPixmap.hasAlphaChannel()¶
- Return type
bool
Returns true
if the pixmap has a format that respects the alpha channel, otherwise returns false
.
See also
- PySide6.QtGui.QPixmap.isNull()¶
- Return type
bool
Returns true
if this is a null pixmap; otherwise returns false
.
A null pixmap has zero width, zero height and no contents. You cannot draw in a null pixmap.
- PySide6.QtGui.QPixmap.isQBitmap()¶
- Return type
bool
Returns true
if this is a QBitmap
; otherwise returns false
.
- PySide6.QtGui.QPixmap.load(fileName[, format=None[, flags=Qt.AutoColor]])¶
- Parameters
fileName – str
format – str
flags –
ImageConversionFlags
- Return type
bool
Loads a pixmap from the file with the given fileName
. Returns true if the pixmap was successfully loaded; otherwise invalidates the pixmap and returns false
.
The loader attempts to read the pixmap using the specified format
. If the format
is not specified (which is the default), the loader probes the file for a header to guess the file format.
The file name can either refer to an actual file on disk or to one of the application’s embedded resources. See the Resource System overview for details on how to embed pixmaps and other resource files in the application’s executable.
If the data needs to be modified to fit in a lower-resolution result (e.g. converting from 32-bit to 8-bit), use the flags
to control the conversion.
Note that QPixmaps are automatically added to the QPixmapCache
when loaded from a file in main thread; the key used is internal and cannot be acquired.
See also
loadFromData()
Reading and Writing Image Files
- PySide6.QtGui.QPixmap.loadFromData(data[, format=None[, flags=Qt.AutoColor]])¶
- Parameters
data –
PySide6.QtCore.QByteArray
format – str
flags –
ImageConversionFlags
- Return type
bool
This is an overloaded function.
Loads a pixmap from the binary data
using the specified format
and conversion flags
.
- PySide6.QtGui.QPixmap.loadFromData(buf[, format=None[, flags=Qt.AutoColor]])
- Parameters
buf – str
format – str
flags –
ImageConversionFlags
- Return type
bool
Loads a pixmap from the len
first bytes of the given binary data
. Returns true
if the pixmap was loaded successfully; otherwise invalidates the pixmap and returns false
.
The loader attempts to read the pixmap using the specified format
. If the format
is not specified (which is the default), the loader probes the file for a header to guess the file format.
If the data needs to be modified to fit in a lower-resolution result (e.g. converting from 32-bit to 8-bit), use the flags
to control the conversion.
See also
load()
Reading and Writing Image Files
This method must be used with an QPixmap object, not the class:
# Wrong pixmap = QPixmap.loadFromData(...) # Right pixmap = QPixmap().loadFromData(...)
- PySide6.QtGui.QPixmap.mask()¶
- Return type
Extracts a bitmap mask from the pixmap’s alpha channel.
Warning
This is potentially an expensive operation. The mask of the pixmap is extracted dynamically from the pixeldata.
See also
setMask()
Pixmap Information
- PySide6.QtGui.QPixmap.rect()¶
- Return type
Returns the pixmap’s enclosing rectangle.
See also
Pixmap Information
- PySide6.QtGui.QPixmap.save(device[, format=None[, quality=-1]])¶
- Parameters
device –
PySide6.QtCore.QIODevice
format – str
quality – int
- Return type
bool
This is an overloaded function.
This function writes a QPixmap
to the given device
using the specified image file format
and quality
factor. This can be used, for example, to save a pixmap directly into a QByteArray
:
pixmap = QPixmap() bytes = QByteArray() buffer = QBuffer(bytes) buffer.open(QIODevice.WriteOnly) pixmap.save(buffer, "PNG") # writes pixmap into bytes in PNG format
- PySide6.QtGui.QPixmap.save(fileName[, format=None[, quality=-1]])
- Parameters
fileName – str
format – str
quality – int
- Return type
bool
Saves the pixmap to the file with the given fileName
using the specified image file format
and quality
factor. Returns true
if successful; otherwise returns false
.
The quality
factor must be in the range [0,100] or -1. Specify 0 to obtain small compressed files, 100 for large uncompressed files, and -1 to use the default settings.
If format
is None
, an image format will be chosen from fileName
's suffix.
See also
Reading and Writing Image Files
- PySide6.QtGui.QPixmap.scaled(s[, aspectMode=Qt.IgnoreAspectRatio[, mode=Qt.FastTransformation]])¶
- Parameters
aspectMode –
AspectRatioMode
mode –
TransformationMode
- Return type
Scales the pixmap to the given size
, using the aspect ratio and transformation modes specified by aspectRatioMode
and transformMode
.
If
aspectRatioMode
isIgnoreAspectRatio
, the pixmap is scaled tosize
.If
aspectRatioMode
isKeepAspectRatio
, the pixmap is scaled to a rectangle as large as possible insidesize
, preserving the aspect ratio.If
aspectRatioMode
isKeepAspectRatioByExpanding
, the pixmap is scaled to a rectangle as small as possible outsidesize
, preserving the aspect ratio.
If the given size
is empty, this function returns a null pixmap.
In some cases it can be more beneficial to draw the pixmap to a painter with a scale set rather than scaling the pixmap. This is the case when the painter is for instance based on OpenGL or when the scale factor changes rapidly.
See also
isNull()
Pixmap Transformations
- PySide6.QtGui.QPixmap.scaled(w, h[, aspectMode=Qt.IgnoreAspectRatio[, mode=Qt.FastTransformation]])
- Parameters
w – int
h – int
aspectMode –
AspectRatioMode
mode –
TransformationMode
- Return type
This is an overloaded function.
Returns a copy of the pixmap scaled to a rectangle with the given width
and height
according to the given aspectRatioMode
and transformMode
.
If either the width
or the height
is zero or negative, this function returns a null pixmap.
- PySide6.QtGui.QPixmap.scaledToHeight(h[, mode=Qt.FastTransformation])¶
- Parameters
h – int
mode –
TransformationMode
- Return type
Returns a scaled copy of the image. The returned image is scaled to the given height
using the specified transformation mode
. The width of the pixmap is automatically calculated so that the aspect ratio of the pixmap is preserved.
If height
is 0 or negative, a null pixmap is returned.
See also
isNull()
Pixmap Transformations
- PySide6.QtGui.QPixmap.scaledToWidth(w[, mode=Qt.FastTransformation])¶
- Parameters
w – int
mode –
TransformationMode
- Return type
Returns a scaled copy of the image. The returned image is scaled to the given width
using the specified transformation mode
. The height of the pixmap is automatically calculated so that the aspect ratio of the pixmap is preserved.
If width
is 0 or negative, a null pixmap is returned.
See also
isNull()
Pixmap Transformations
- PySide6.QtGui.QPixmap.scroll(dx, dy, rect[, exposed=None])¶
- Parameters
dx – int
dy – int
rect –
PySide6.QtCore.QRect
exposed –
PySide6.QtGui.QRegion
Scrolls the area rect
of this pixmap by (dx
, dy
). The exposed region is left unchanged. You can optionally pass a pointer to an empty QRegion
to get the region that is exposed
by the scroll operation.
pixmap = QPixmap("background.png") exposed = QRegion() pixmap.scroll(10, 10, pixmap.rect(), exposed)
You cannot scroll while there is an active painter on the pixmap.
See also
scroll()
scroll()
- PySide6.QtGui.QPixmap.scroll(dx, dy, x, y, width, height[, exposed=None])
- Parameters
dx – int
dy – int
x – int
y – int
width – int
height – int
exposed –
PySide6.QtGui.QRegion
This convenience function is equivalent to calling (dx
, dy
, QRect
(x
, y
, width
, height
), exposed
).
See also
scroll()
scroll()
- PySide6.QtGui.QPixmap.setDevicePixelRatio(scaleFactor)¶
- Parameters
scaleFactor – float
Sets the device pixel ratio for the pixmap. This is the ratio between image pixels and device-independent pixels.
The default scaleFactor
is 1.0. Setting it to something else has two effects:
QPainters that are opened on the pixmap will be scaled. For example, painting on a 200x200 image if with a ratio of 2.0 will result in effective (device-independent) painting bounds of 100x100.
Code paths in Qt that calculate layout geometry based on the pixmap size will take the ratio into account: QSize
layoutSize = pixmap. size()
/ pixmap. devicePixelRatio()
The net effect of this is that the pixmap is displayed as high-DPI pixmap rather than a large pixmap (see Drawing High Resolution Versions of Pixmaps and Images
).
See also
devicePixelRatio()
deviceIndependentSize()
- PySide6.QtGui.QPixmap.setMask(arg__1)¶
- Parameters
arg__1 –
PySide6.QtGui.QBitmap
Sets a mask bitmap.
This function merges the mask
with the pixmap’s alpha channel. A pixel value of 1 on the mask means the pixmap’s pixel is unchanged; a value of 0 means the pixel is transparent. The mask must have the same size as this pixmap.
Setting a null mask resets the mask, leaving the previously transparent pixels black. The effect of this function is undefined when the pixmap is being painted on.
- PySide6.QtGui.QPixmap.size()¶
- Return type
Returns the size of the pixmap.
See also
width()
height()
Pixmap Information
- PySide6.QtGui.QPixmap.swap(other)¶
- Parameters
other –
PySide6.QtGui.QPixmap
Swaps pixmap other
with this pixmap. This operation is very fast and never fails.
- PySide6.QtGui.QPixmap.toImage()¶
- Return type
Converts the pixmap to a QImage
. Returns a null image if the conversion fails.
If the pixmap has 1-bit depth, the returned image will also be 1 bit deep. Images with more bits will be returned in a format closely represents the underlying system. Usually this will be Format_ARGB32_Premultiplied
for pixmaps with an alpha and Format_RGB32
or Format_RGB16
for pixmaps without alpha.
Note that for the moment, alpha masks on monochrome images are ignored.
See also
fromImage()
Image Formats
- PySide6.QtGui.QPixmap.transformed(arg__1[, mode=Qt.FastTransformation])¶
- Parameters
arg__1 –
PySide6.QtGui.QTransform
mode –
TransformationMode
- Return type
Returns a copy of the pixmap that is transformed using the given transformation transform
and transformation mode
. The original pixmap is not changed.
The transformation transform
is internally adjusted to compensate for unwanted translation; i.e. the pixmap produced is the smallest pixmap that contains all the transformed points of the original pixmap. Use the trueMatrix()
function to retrieve the actual matrix used for transforming the pixmap.
This function is slow because it involves transformation to a QImage
, non-trivial computations and a transformation back to a QPixmap
.
See also
trueMatrix()
Pixmap Transformations
- static PySide6.QtGui.QPixmap.trueMatrix(m, w, h)¶
- Parameters
w – int
h – int
- Return type
Returns the actual matrix used for transforming a pixmap with the given width
, height
and matrix
.
When transforming a pixmap using the transformed()
function, the transformation matrix is internally adjusted to compensate for unwanted translation, i.e. transformed()
returns the smallest pixmap containing all transformed points of the original pixmap. This function returns the modified matrix, which maps points correctly from the original pixmap into the new pixmap.
See also
transformed()
Pixmap Transformations
© 2022 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.