首頁 > 軟體

詳解Qt使用QImage類實現影象基本操作

2022-06-16 10:00:36

一、專案介紹

利用QImage類實現對影象的基本操作,包括影象顯示、影象縮放、影象旋轉等。

二、專案基本設定

新建一個Qt案例,專案名稱為“ImageTest”,基礎類別選擇“QWidget”,點選選中建立UI介面核取方塊,完成專案建立。

三、UI介面設計

UI介面佈局如下:

介面中建立了5個控制元件,其名稱和型別如下:

序號名稱型別屬性
ChooseQPushButtontext:選擇影象
RotateQPushButtontext:影象旋轉
ZoomQPushButtontext:影象縮放
imagelabelQLabel
horizontalSliderQSliderminimum:0
maximum:359

四、主程式實現

4.1 widget.h標頭檔案

標頭檔案中宣告原始影象img:

public:
    QImage img;//原始影象

宣告三個按鈕點選槽函數和一個滑動條滑動槽函數:

private slots:
    void on_Choose_clicked();

    void on_Rotate_clicked();

    void on_Zoom_clicked();

    void on_horizontalSlider_valueChanged(int value);

4.2 widget.cpp原始檔

定義選擇影象槽函數:

//選擇影象
void Widget::on_Choose_clicked()
{
    QString path=QFileDialog::getOpenFileName(this,tr("選擇影象"),"E:\image\",tr("Images (*.png *.bmp *.jpg *.tif *.GIF )"));
    if(path.isEmpty())
    {
         return;
    }
    else
    {
        if(! ( img.load(path) ) ) //載入影象
        {
            QMessageBox::information(this,tr("開啟影象失敗"),tr("開啟影象失敗!"));
            //delete img;
            return;
        }
        //img.load(path);
        ui->imagelabel->setPixmap(QPixmap::fromImage(img));
    }

}

定義影象縮放槽函數:

//影象縮放
void Widget::on_Zoom_clicked()
{
    QImage* imgScaled = new QImage;
    int width=ui->imagelabel->width()/2;
    int height=ui->imagelabel->height()/2;
    *imgScaled=img.scaled(width,height,Qt::KeepAspectRatio);//對半縮放
    ui->imagelabel->setPixmap(QPixmap::fromImage(*imgScaled));
}

定義影象旋轉槽函數:

//影象旋轉
void Widget::on_Rotate_clicked()
{
    ui->horizontalSlider->setVisible(true);//顯示滑動條
}

定義滑動條值變化槽函數:

//進度條值變化
void Widget::on_horizontalSlider_valueChanged(int value)
{
    qDebug()<<value;//輸出旋轉角度
    QImage* imgRatate = new QImage;
    QMatrix matrix;
    matrix.rotate(value);
    *imgRatate = img.transformed(matrix);
    ui->imagelabel->setPixmap(QPixmap::fromImage(*imgRatate));
}

五、效果演示

完整效果如下:

到此這篇關於詳解Qt使用QImage類實現影象基本操作的文章就介紹到這了,更多相關Qt影象基本操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com