QPixmap de Qt
Debido a que la clase QPixmap utiliza el intercambio de datos implícito, puede pasar objetos QPixmap por valor. Para obtener más información, consulte la documentación sobre intercambio implícito de datos. Los objetos QPixmap también se pueden transmitir.
Tenga en cuenta que los datos de píxeles en pixmaps son datos internos y son administrados por el sistema de ventanas subyacente. Dado que QPixmap es una subclase de QPaintDevice, puede usar QPainter para pintar directamente en el mapa de píxeles. Solo se puede acceder a los píxeles a través de las funciones de QPainter o convirtiendo un QPixmap en un QImage. Sin embargo, la función fill() se puede utilizar para inicializar todo el mapa de píxeles con un color determinado.
Hay muchas funciones para convertir entre QImage y QPixmap. Normalmente, la clase QImage se utiliza para cargar archivos de imagen y procesar los datos de la imagen antes de convertir el objeto QImage en un QPixmap para mostrarlo en la pantalla. Alternativamente, si no se requiere procesamiento, el archivo de imagen se puede cargar directamente en QPixmap.
QPixmap proporciona un conjunto de funciones que se pueden utilizar para obtener diversa información sobre el mapa de píxeles. Además, existen varias funciones para convertir mapas de píxeles.
Construye un mapa de píxeles a partir de un archivo utilizando el nombre de archivo dado. Si el archivo no existe o se desconoce el formato, el mapa de píxeles se convertirá en un mapa de píxeles vacío. El cargador intentará leer el mapa de píxeles utilizando el formato especificado. Si no se especifica ningún formato (el valor predeterminado), el cargador prueba el encabezado del archivo para adivinar el formato del archivo. El nombre del archivo puede ser un archivo real en el disco o un recurso integrado dentro de la aplicación. Para obtener más información sobre cómo incrustar imágenes y otros archivos de recursos en el ejecutable de su aplicación, consulte Sistema de recursos.
Si necesita modificar la imagen para adaptarla a un resultado de menor resolución (por ejemplo, convertir de 32 bits a 8 bits), utilice etiquetas para controlar la conversión.
Los parámetros fileName, format y flags se pasan a load(). Esto significa que los datos en fileName no se compilarán en un archivo binario. Si fileName contiene una ruta relativa (por ejemplo, solo un nombre de archivo), el archivo relevante debe encontrarse en relación con el directorio de trabajo del tiempo de ejecución.
Construye un mapa de píxeles utilizando el ancho y alto dados. Si el ancho o el alto es cero, se construye un mapa de píxeles vacío. Advertencia: esto crea un QPixmap con datos no inicializados. Llame a fill() para llenar el mapa de píxeles con el color apropiado, luego use QPainter para dibujarlo.
Aquí hay un ejemplo de cómo usar QLabel para usar QPixmap:
Efecto:
QPixmap proporciona varias formas de leer archivos de imagen: Puede cargar el archivo al construir el objeto QPixmap, o más tarde usando las funciones load() o loadFromData(). Al cargar una imagen, el nombre del archivo puede hacer referencia a un archivo real en el disco o a un recurso integrado dentro de la aplicación. Para obtener más información sobre cómo incrustar imágenes y otros archivos de recursos en el ejecutable de su aplicación, consulte Descripción general del sistema de recursos Qt.
Puedes guardar un objeto QPixmap simplemente llamando a la función save().
La lista completa de formatos de archivo admitidos está disponible a través de las funciones supportImageFormats() y supportImageFormats(). Se pueden agregar nuevos formatos de archivo como complementos. De forma predeterminada, Qt admite los siguientes formatos:
Utilice load() para cargar un mapa de píxeles desde un archivo con el nombre de archivo dado. Si el mapa de píxeles se ha cargado correctamente, devuelve Verdadero; de lo contrario, el mapa de píxeles no es válido y devuelve Falso:
Efecto:
Tenga en cuenta que cuando se carga desde un archivo en el hilo principal, QPixmap Agregado automáticamente a QPixmapCache. La clave utilizada es una clave interna y no está disponible.
loadFromData() carga el mapa de píxeles desde los primeros len bytes de los datos binarios dados. Si el mapa de píxeles se carga correctamente, devuelve verdadero; de lo contrario, el mapa de píxeles no es válido y devuelve falso; Esta función escribe un QPixmap en el dispositivo especificado utilizando el formato de archivo de imagen y el factor de calidad especificados. Por ejemplo, se puede utilizar para guardar un mapa de píxeles directamente en un QByteArray:
QPixmap proporciona un conjunto de funciones que se pueden utilizar para obtener información diversa sobre el mapa de píxeles:
createHeuristicMask( [clipTight =true]) crea y devuelve una máscara heurística para este mapa de píxeles. Esto funciona seleccionando un color de cualquier esquina y recortando píxeles de ese color comenzando desde todos los bordes. Si clipTight es verdadero (el valor predeterminado), la máscara será lo suficientemente grande como para cubrir los píxeles; de lo contrario, la máscara será más grande que los píxeles de datos;
Puede que la máscara no sea perfecta, pero debería ser razonable, por lo que puedes hacer lo siguiente:
Esta función se ejecuta más lentamente porque implica conversión de QImage y cálculos no tediosos. Ver también: createHeuristicMask(), createMaskFromColor().
Puedes convertir un objeto QPixmap en un QImage usando la función toImage(). Asimismo, puede utilizar fromImage() para convertir un QImage en un QPixmap. Si esto es demasiado caro, utilice fromImage() en su lugar.
Para convertir un QPixmap a HICON, use las funciones QtWinExtras QtWin::toHICON() y QtWin::fromHICON() respectivamente.
QPixmap admite varias funciones para crear nuevos mapas de píxeles que son versiones transformadas del mapa de píxeles original: las funciones scaled(), scaledToWidth() y scaledToHeight() devuelven copias escaladas del mapa de píxeles, mientras que la función copy() crea un QPixmap que es una copia escalada del mapa de píxeles original.
scaled() Devuelve una copia del mapa de píxeles reducida a un rectángulo con el ancho y alto dados de acuerdo con AspectRatioMode y transformMode dados.
El uso de scaledToWidth() y scaledToHeight() es similar a scaled():
copy() devuelve el mapa de píxeles especificado por el rectángulo QRect (x, y, ancho, alto ) Copia en profundidad del subconjunto:
La función transformd() devuelve una copia del mapa de píxeles transformado usando la matriz de transformación y el modo de transformación dados: Internamente, la matriz de transformación se ajusta para compensar la traducción innecesaria. Además, es decir, transform() devolverá el valor mínimo del mapa de píxeles.
Por ejemplo, transform() devuelve el mapa de píxeles más pequeño que contiene todos los puntos transformados del mapa de píxeles original. La función estática trueMatrix() devuelve la matriz real utilizada para transformar el mapa de píxeles.
Las siguientes clases de procesamiento de imágenes también admiten estas funciones en transformaciones:
QBitmap QImage QImageReader QImageWriter
PySide2.QtGui.QPixmap.isName()
PySide2.QtGui.QPixmap.swap(other) Intercambia otro (es decir, una instancia de QPixmap) con este mapa de píxeles. Esta operación es muy rápida y no falla.