QImage에서 표시하려고하는 이미지가 있습니다. 내 데이터 버퍼는 "행 높이"이고 "COLS * 3 폭"입니다,이 데이터 버퍼를 QImage에 표시하는 방법
rgbMapped[row][col * 3] = red;
rgbMapped[row][col * 3 + 1] = green;
rgbMapped[row][col * 3 + 2] = blue;
당신이 볼 수 있듯이 :
이
*이 COLS 이미지 행을 채 웁니다 코드의 조각이다rgbMapped는 부호없는 char ** 배열입니다. 그래서 나의 QT 코드에서 나는 다음과 같습니다
QImage *qi = new QImage(getWidth(), getHeight(), QImage::Format_RGB888);
for (int h = 0; h< getHeight(); h++){
memcpy(qi->scanLine(h), rgbMapped[h], getWidth()*3);
}
QPixmap p(QPixmap::fromImage(*qi,Qt::ColorOnly));
if(scene.items().contains(item)){
scene.removeItem(item);
}
item = new ImagePixmapItem(p);
scene.addItem(item);
ui->graphicsView->setScene(&scene);
ui->graphicsView->show();
ImagePixMapItem 내가 나에게 몇 가지 마우스 이벤트를 가로 챌 수 있도록 작성한 QGraphicsPixmapItem,하지만 난 페인트 기능 또는 아무것도의와 anyhting을 dindt.
이 코드를 실행하면 내 이미지가 내 이미지처럼 보입니다. 단 3 개의 사본, 녹색 색조가있는 이미지, 노란색 틱이있는 이미지, 자주색 색조가있는 이미지가 있습니다.
이 세 가지 데이터가 서로 오버레이 된 경우 정확한 이미지가 될 것 같습니다.
- 테스트 케이스를 간소화하고 파일 대신 이미지를 저장하거나 QPainter를 사용하여 직접 페인트하려고합니다. 그냥 QImage-QPixmap 변환이나 그래픽보기에 문제가 없는지 확인하십시오. - 내 첫 번째 추측은 어떻게 든 행과 열이 어긋나게되는 것입니다. –
3 장으로 동일한 이미지가 가로 또는 세로로 동일한 크기의 이미지에 3 개 찍혔다는 것을 의미합니까? 아니면 그 결과가 너비 또는 높이의 3 배가 될까요? –
그것이 예정되어 있었던 폭의 3 배이었다. getHeight() 및 getWidth()가 배열의 치수를 반환했기 때문에 그 부분이있을 수 있다고 생각합니다. 대신 이미지의 크기가되어야합니까? – Derek