首页 > 其他分享 >PyQt5 使用 QLabel 实现对图片圆角或者圆形图片

PyQt5 使用 QLabel 实现对图片圆角或者圆形图片

时间:2024-09-26 11:04:20浏览次数:6  
标签:pixmap 圆角 image PyQt5 height 图片 QPixmap QLabel

PyQt5 使用 QLabel 实现对图片圆角或者圆形图片

本文圆角实现代码,是基于Qt处理图片:设置图片圆角样式,支持全圆角和部分圆角这篇文章将C++Python重写得到,感谢!!实现方法就是使用QPainterQPainterPath,将原QPixmap对象,先裁剪出一个圆角QPixmap对象并返回,最后通过QLabelsetPixmap方法设置新图像

1. 实现效果

imageimage

2. 创建圆角图像的方法

把原QPixmap对象,先裁剪出一个圆角QPixmap对象并返回

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@ File        : test_QLabel_rounded_corners.py
@ Author      : yqbao
@ Version     : V1.0.0
@ Description : QLabel 中显示圆角效果的图片
"""
from typing import Union

from PyQt5.QtCore import Qt, QRectF
from PyQt5.QtGui import QPixmap, QPainter, QPainterPath

def create_rounded_pixmap(pixmap: QPixmap, radius: Union[int, float]) -> QPixmap:
    """带圆角的 QPixmap"""
    if pixmap.isNull():  # 不处理空数据或者错误数据
        return pixmap

    # 获取图片尺寸
    image_width = pixmap.width()
    image_height = pixmap.height()

    # 处理大尺寸的图片,保证图片显示区域完整
    new_pixmap = QPixmap(
        pixmap.scaled(image_width, image_width if image_height == 0 else image_height, Qt.IgnoreAspectRatio,
                      Qt.SmoothTransformation))
    dest_image = QPixmap(image_width, image_height)
    dest_image.fill(Qt.transparent)

    painter = QPainter(dest_image)
    painter.setRenderHint(QPainter.Antialiasing)  # 抗锯齿
    painter.setRenderHint(QPainter.SmoothPixmapTransform)  # 平滑处理
    # 裁圆角
    path = QPainterPath()
    rect = QRectF(0, 0, image_width, image_height)
    path.addRoundedRect(rect, radius, radius)
    painter.setClipPath(path)
    painter.drawPixmap(0, 0, image_width, image_height, new_pixmap)

    return dest_image

3. 使用举例

创建QWidget,并添加QLabel,查看运行效果

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@ File        : test_QLabel_rounded_corners.py
@ Author      : yqbao
@ Version     : V1.0.0
@ Description : QLabel 中显示圆角效果的图片
"""
from PyQt5.QtWidgets import QApplication, QLabel, QVBoxLayout,QWidget

class RoundedQLabel(QWidget):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout()

        label = QLabel()
        label.setScaledContents(True)  # 自适应大小

        pixmap = QPixmap(r'image\30.png')  # 替换为你的图像路径
        rounded_pixmap = create_rounded_pixmap(pixmap, 45)

        # 正方形图片,圆角半径设置为尺寸一半,则是圆
        # pixmap = QPixmap(r'image\29.png')  # 替换为你的图像路径
        # rounded_pixmap = create_rounded_pixmap(pixmap, pixmap.height() / 2)

        label.setPixmap(rounded_pixmap)
        label.setFixedSize(pixmap.width() // 2, pixmap.height() // 2)  # 固定 label 大小

        # 将 QLabel 添加到布局中
        layout.addWidget(label)
        self.setLayout(layout)


if __name__ == '__main__':
    app = QApplication([])
    window = RoundedQLabel()
    window.show()
    app.exec_()

Qt处理图片:设置图片圆角样式,支持全圆角和部分圆角
本文章的原文地址
GitHub主页

标签:pixmap,圆角,image,PyQt5,height,图片,QPixmap,QLabel
From: https://www.cnblogs.com/yqbaowo/p/18432967

相关文章

  • 一键去水印小程序源码系统 下载无水印的高清图片 带完整的安装代码包以及搭建部署教程
    系统概述一键去水印小程序源码系统是一款专为图片去水印设计的软件开发包(SDK),它集成了先进的图像处理技术和智能识别算法,能够自动识别并去除图片中的水印,同时保持图片的高清画质不受损。该系统支持多种图片格式,包括但不限于JPEG、PNG、GIF等,广泛适用于电商、设计、教育、自媒体......
  • Pyqt5 修改表格排序箭头
    实现效果:代码fromchatgptimportsysfromPyQt5.QtWidgetsimportQApplication,QTableWidget,QTableWidgetItem,QVBoxLayout,QWidgetfromPyQt5.QtCoreimportQtclassTableDemo(QWidget):def__init__(self):super().__init__()#创建表......
  • Qt - 从网站上获取图片
    在Qt中,你可以使用QNetworkAccessManager来从网站上获取图片。以下是一个简单的例子,展示了如何使用Qt下载图片:imagedownloader.h#ifndefIMAGEDOWNLOADER_H#defineIMAGEDOWNLOADER_H#include<QCoreApplication>#include<QNetworkAccessManager>#include<QNetworkRequest......
  • 外网玩疯了,NSFW、毫无底线,FLUX 成为图片生成新王者
    马斯克的Grok-2发布,加入了FLUX模型提供的文生图能力。一夜之间,FLUX毫无底线的图片血洗X(推特)。自从Google把美国开国总统和印第安人都画成黑人之后,马斯克带头掀起另一个极端的文生图刷屏现象。FLUX模型,来自于德国创业公司BlackForestLabs,拳打MJ脚踩SD,图片质......
  • 用这些简单的 Midjourney 提示词,轻松生成超高质图片!
    作者:老余捞鱼原创不易,转载请标明出处及原作者。写在前面的话:    本文详细介绍了如何通过Midjourney平台使用简单的提示词来生成高质量、逼真的图片。即使是简单的提示词也能产生出色的效果,而且可以根据需要逐步增加细节来完善图像。文中提供了多个实际的提示示......
  • 怎么在pdf里面插图片?5个好用方法,新手快来学!(全)
    怎么在pdf里面插图片?日常办公生活中,我们需要处理各式各样的文件。其中PDF文件是我们经常需要使用到的,PDF格式文档具有较强的兼容性可以在各种平台打开查看,但是PDF编辑是个难题,有小伙伴就问:那要怎么在pdf里面插图片呢?其实给PDF添加图片不难,我们可以使用专业的pdf编辑工具来解决,......
  • 如何删除 WPS 在图片文件属性中添加的“属性修改”选项卡
    近期发现WPS2023这一个非常恼人的特性,在图片文件的属性窗口里面乱加第三方选项卡。同事的电脑安装了这个版本,就让同事从注册表试了一下。还好金山他们藏的不是很深,借助GPT很快也就找到了。这里再用鄙人自己的虚拟机演示一遍。HKEY_CLASSES_ROOT\*\shellex\PropertySheetHan......
  • MySQl 01文中的图片放在我的资源里了
    MySQL数据库概念长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据仓库特点免费、开源数据库小巧、功能齐全使用便捷可运行于Windows或Linux操作系统可适用于中小型甚至大型网站应用数据库总览关系型数据库(SQL)MySQL、Oracle、SQLServer、SQLite、......
  • 3d可视化图片:通过原图和深度图实现
    1、depthy在线体验demo:https://depthy.stamina.pl/#/也可以docker安装上面服务:dockerrun--rm-t-i-p9000:9000ndahlquist/depthyhttp://localhost:90001)首先传原图2)再传对应深度图3)效果</ifra......
  • 小红书保存无水印图片丨图文教程来啦✅
    ......