Como gerar esta imagem de 24 bits no Qt
Eu tenho uma matriz de caracteres não assinada que é definida assim:
unsigned char **chars = new unsigned char *[H];
for(int i = 0; i < H; i++)
{
chars[i] = new unsigned char[W*3];
}
Onde H é a altura da imagem e W é a largura, e chars é preenchido no restante dessa função fazendo um loop pelas linhas x colunas da imagem de entrada. Chars é preenchido na ordem Red Green Blue
Estou tentando lê-lo com algo como isto:
QImage *qi = new QImage(imwidth, imheight, QImage::Format_RGB888);
for (int i = 0 ; i < imheight ; i++)
for (int j = 0 ; j < imwidth ; j++)
{ //not sure why, but have to flip j and i in the index for setPixel
qi->setPixel(j,i,qRgb(imageData[i][j],imageData[i][j+1],imageData[i][j+2]));
j+=3;
}
QPixmap p(QPixmap::fromImage(*qi,Qt::AutoColor));
QPixmap p1(p.scaled(ui->menuBar->width(),ui->menuBar->width(), Qt::KeepAspectRatio, Qt::SmoothTransformation ));
ui->viewLabel->setPixmap(p1);
ui->viewLabel->setFixedHeight(p1.height());
ui->viewLabel->setFixedWidth(p1.width());
onde chars foi retornado para essa função de chamada na matriz imageData.
O que estou fazendo errado? Devo usar um formato diferente, mesmo que esteja alocando claramente 3 caracteres não assinados por pixel (e foi por isso que escolhi o formato RGB888). Esse código, conforme publicado, retorna uma imagem, mas está sendo exibida incorretamente - parcialmente embaralhada, desbotada etc.
obrigado