Отображать изображения в приложении QT4 через VNC и SSH - PullRequest
2 голосов
/ 23 мая 2011

Я пытаюсь запустить мое приложение QT через VNC, и я вижу некоторые различия.

Мои изображения загружаются в элементы QImage и являются изображениями RGB.Я хочу работать только с изображениями в градациях серого, поэтому я попытался создать изображение в градациях серого следующим образом:

    QRgb col;
     int gray;
     for (int i = 0; i < imwidth; ++i)
     {
           for (int j = 0; j < imheight; ++j)
           {
                col = chip.pixel(i, j);
                gray = qGray(col);
                chip.setPixel(i, j, qRgb(gray, gray, gray));
            }
     }

, где chip - это мой QImage

Затем, чтобы получить необработанные данные чипаЯ использую следующее:

 int chipDataLength = chip.bytesPerLine();

     qDebug("Chip Width: %i", imwidth);
     qDebug("Chip height: %i", imheight);
     qDebug("Bytes per line : %i",chipDataLength);
     int bpp = chipDataLength/imwidth;

     qDebug("Size uchar: %i", sizeof(unsigned char) );
     qDebug("Size of qRgb: %i", sizeof(qRgb(1,1,1)));
     unsigned char * tempData = (unsigned char *)malloc(imheight*chipDataLength*sizeof(unsigned char));

     unsigned char * oneBandData = (unsigned char *)malloc(imheight*imwidth*sizeof(unsigned char));

     tempData = chip.bits();

     for (int i = 0; i < imheight; i++)
     {
           for (int j = 0; j < imwidth; j++)
           {
               oneBandData[i*imwidth+j] = tempData[i*chipDataLength + j*bpp];
           }
     }

Когда я запускаю этот код по SSH-соединению (или просто на сервере), код работает нормально, и в oneBandData есть ожидаемые значения.Когда я пытаюсь запустить его через VNC, oneBandData неверен!

Я пытался использовать растр параметров -qgraphicssystem, но он все равно дает мне искаженное изображение.

Кроме того, этот bppбыла добавлена ​​переменная, потому что chipDataLength получала 4 * imwidth на SSH и 2 * imwidth на VNC.Почему это отличается?Что я могу сделать, чтобы этот код работал в обоих направлениях?

...