2011-01-18 4 views
0

Qt에서 다른 기능의 데이터로 들어오는 이미지를 표시하려고합니다. 부호없는 문자로 저장에게 이미지의 행을 기능부호없는 문자에서 오는 Qt의 이미지 표시 **

**

, 어디 선가 읽은 나는 어떻게 든 QByteArray로 저장 한 다음 QPixMap는 다음을 표시하는 라벨의 QPixMap를 설정 만들 수 있지만, 나는 운이별로 없다.

unsigned char* fullCharArray = new unsigned char[imheight * imwidth]; 
for (int i = 0 ; i < imheight ; i++) 
for (int j = 0 ; j < imwidth ; j++) 
fullCharArray[i*j+j] = imageData[i ][j]; 

QPixmap *p = new QPixmap(reinterpret_cast<const char *>(fullCharArray)); 
ui->viewLabel->setPixMap(p); 

그러나 이것은 나에게 오류를 제공하는 것, 그리고 어쨌든 잘못된 일이 될 수 있습니다

이 내가 가진 것입니다. setPixMap (p [])를 호출하려고하면 오류가 사라지지만 이미지가 레이블에 표시되지 않습니다.

imageData는 다른 기능에 의해 채워지는 2D 배열입니다. 나는 새로운 QPixMap을 생성하기 위해 그것을 1D 배열로 변환하고 수동으로 인덱스 계산을해야한다고 생각했다. 이것이 For 루프가하는 일입니다.

Qt에서이 이미지 데이터를 표시하는 더 좋은 방법이 있습니까?

답변

0

데이터가 이미 PNG와 같은 이미지 형식이거나 헤더가있는 jpeg 형식 인 경우 QPixmap을 사용합니다. 픽셀 값은 Qimage를 사용에서

이미지를 만들려면 다음) (픽스맵에 Qpixmap.fromImage (이 변환 -을 저장하거나 표시하는 데 필요한 경우

0

픽스맵 화소의 2 차원 어레이하지 그들은 실제로 화상을 나타내는 문자 스트링의 어레이로 정의되는 예를 들어

, 4 개 화소 블랙 센터의 4x4 픽셀 이미지, 4 코너 픽셀 적색이다 :

/* XPM */ 
static char * sample_xpm[] = { 
"4 4 3 1", 
" C#FF0000", 
". C#FFFFFF", 
"+ C#000000", 
" .. ", 
".++.", 
".++.", 
" .. "}; 

작은 이미지 (예 : 이미지)를 저장하는 편리한 파일 형식입니다. 툴바 버튼 용)는 표준 #include 지시문을 사용하여 C 소스 파일에 통합 될 수 있으며 나머지 프로그램과 함께 컴파일됩니다.