使用QTransform 完成QImage图像的垂直翻转

embedded/2024/10/22 13:34:33/

测试代码:

    QImage image1("C:\\Users\\Administrator\\Desktop\\mono_2.bmp");qDebug() << QImage::Format_Mono;QLabel *m_label_1 = new QLabel;QLabel *m_label_2 = new QLabel;m_label_1->setPixmap(QPixmap::fromImage(image1));m_label_1->show();QTransform transform;transform.scale(1.0, -1.0);  // 垂直翻转transform.translate(0, -image1.height());  // 调整变换后的图像位置QImage flippedImage = image1.transformed(transform);flippedImage.save("C:\\Users\\Administrator\\Desktop\\mono_2_flip.bmp","BMP");m_label_2->setPixmap(QPixmap::fromImage(flippedImage));m_label_2->show();

原理:

使用QTransform类创建一个变换矩阵。
scale(1.0, -1.0):在垂直方向上缩放图像,使其垂直翻转。
translate(0, -image1.height()):调整翻转后的图像位置,使其仍然完整地显示在图像窗口中。因为垂直翻转后,图像会向上移动,所以需要向下平移image1.height()个像素单位。 

翻转后的效果:

小结 


http://www.ppmy.cn/embedded/129569.html

相关文章

【Flutter】基础入门:开发环境搭建

Flutter 是一个强大的跨平台框架&#xff0c;支持在 Android、iOS、Windows、Linux、Web 等多种平台上开发应用。下面将详细介绍如何在各个平台上构建 Flutter 开发环境&#xff0c;并使用相同的项目代码构建出一个可以在多个平台运行的跨平台 Demo。 Flutter 环境配置&#x…

Java 知识点

遍历list列表&#xff0c;两种常用的 List<String> list new ArrayList<>();list.add("123");list.add("12334");for (String a: list) {System.out.println(a);}list.forEach(str -> {System.out.println("1" str);});2 . lam…

cinder组件

cinder&#xff1a;提供云硬盘功能&#xff08;持久化块存储&#xff09; 1.如果环境中对接多个存储&#xff0c;用户可以指定存储空间来源 1.1搭NAS存储 1.1.1配置存储节点-管理接口 1.1.2配置存储节点-业务接口&#xff08;二层网络不需要配网关&#xff09; 1.1.3引申-系统…

C++面向对象编程学习

C面向对象编程学习 前言一、C面向对象编程二、知识点学习1. 定义一个类1.1 使用struct定义1.2 使用class定义1.3 struct和class的区别 2. 类的定义方式2.1 单文件定义&#xff08;Inline Definition&#xff09;2.2 分离定义&#xff08;Separate Definition&#xff09;2.3 头…

CSSfilter实现磨砂效果

以往我们实现磨砂效果一般是用背景透明度和阴影来实现的&#xff0c;但这种效果给人看起来比较僵硬&#xff0c;也无法更加灵活的变更效果。 如今&#xff0c;filter属性可以实现磨砂效果&#xff0c;案例如下 <!DOCTYPE html> <html lang"en"><hea…

【力扣 | SQL题 | 每日3题】力扣1097,1149,1070

1hard 2 mid&#xff0c;难度还行&#xff0c;当做练手。 1. 力扣1097&#xff1a;游戏玩法分析5 1.1 题目&#xff1a; 表&#xff1a;Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id …

线性代数 行列式

一、行列式 1、定义 一个数学概念&#xff0c;主要用于 线性代数中&#xff0c;它是一个可以从方阵&#xff08;即行数和列数相等的矩阵&#xff09;形成的一个标量&#xff08;即一个单一的数值&#xff09; 2、二阶行列式 &#xff0c;像这样将一个式子收缩称为一个 2*2 的…

异地多活架构

一、异地多活简介 异地多活是一种高可用性部署策略&#xff0c;旨在通过在地理上分散的多个数据中心部署应用和数据&#xff0c;来提高系统的可用性和灾难恢复能力。这种策略能够确保在一个或多个数据中心发生故障时&#xff0c;系统仍然能够继续提供服务&#xff0c;从而最大…