测试代码:
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()个像素单位。
翻转后的效果:
小结