출처 : http://ko11011.tistory.com/trackback/8


QT에서 이미지를 로드하여 화면에 출력하는 방법을 알아보자

 

순서

QImage로 이미지를 불러온다. -> QPixmap에 옮긴다. -> QLabel에서 QPixmap를 불러와서 화면에 출력한다.

 

코드를 보며 설명하겠다.

 

 

#include <QImage>              //QImage를 사용하기 위한 라이브러리

#include <QPixmap>             //QPixmap를 사용하기 위한 라이브러리

#include <QLabel>              //QLabel를 사용하기 위한 라이브러리

#include <QMessageBox>         //QMessageBox를 사용하기 위한 라이브러리

 

//해당 함수로 이미지를 로드한다. ( 직접 제작한 함수이다.)

void MainWindow::imgload()

{

    QImage *Img = new QImage();       //이미지를 로드하기 위한 QImage 선언

    QPixmap *buffer = new QPixmap();  //버퍼로 사용할 QPixmap 선언

 

    if(Img->load(":/img/1.jpg"))      //이미지를 로드한다.

{

        *buffer = QPixmap::fromImage(*Img);   //이미지를 버퍼에 옮긴다.

        *buffer = buffer->scaled(Img->width(),Img->height()); //이미지 사이즈 조절

    }

    else // 이미지 로드 실패

{

        QMessageBox::about(0, QString::fromAscii("Image load Error"),QString::fromAscii    ("Image load Error"));

    }

 

    QLabel *lbView = new QLabel(this); //이미지를 화면에 출력할 QLabel 선언

    lbView->setPixmap(*buffer);       //버퍼에 있는 이미지를 QLabel에 출력

    lbView->resize(buffer->width(),buffer->height()); //QLabel의 크기를 이미지 사이즈에 맞추어 조절한다.

    lbView->move(0,0);                //QLabel위치 조정

    lbView->show();                   //QLabel 를 보여준다.

}

 

 

 

 

변수는 총 3개 필요하다.

1) QImage         이미지를 불러올 때 이미지라는 것을 알기 위해 사용한다.

2) QPixmap        : QLabel에 이미지를 옮길 때 사용하는 중간 버퍼

3) QLabel          실제로 화면에 출력해주기 위한 Label

 

QImage load함수를 사용하여 이미지를 로드한다.

if(Img->load(":/img/1.jpg"))   //이미지를 로드한다.

 

 

bool QImage::load ( const QString & fileName, const char * format = 0 )

 

첫번째 인자 : 파일이름이 들어간다.

두번째 인자 : 파일의 포멧이 들어간다. (생략 가능하다.)

 

리턴값 : 이미지 로드가 성공시 TRUE을 리턴하고 실패시 FALSE를 리턴한다.

 

 

QPixmap static 함수를 사용하여 QImage 변수형을 QPixmap형식으로 전환하여 옮긴다.

 

*buffer = QPixmap::fromImage(*Img);

 

 

QPixmap QPixmap::fromImage ( const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor ) [static]

 

첫번째 인자 : 변환할 QImage

두번째 인자 : Qt::ImageConversionFlags 설정 (기본값이 설정되어있어 변경하지 않았다자세한 내용은 필자도 모른다. Qt::ImageConversionFlags를 참고 )

 

 

 

QLabel setPixmap 함수를 이용하여 QPixmap에 옮긴 이미지를 QLabel에 출력한다.

 

lbView->setPixmap(*buffer);

 

 

Public Slots

        void    setPixmap ( const QPixmap & )

첫번째 인자 : 출력할 QPixmap

'QT > Examples' 카테고리의 다른 글

QT로 Serial 통신 구현하기 - 1  (0) 2015.04.15
Hello World를 띄우자.  (0) 2015.04.08
Qt에서 OpenCV 사용하기  (0) 2015.03.30
Posted by 모래반지빵냐빵냐
,