2

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));
            }
     }

チップは私の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ラスターを使用しようとしましたが、それでも歪んだ画像が表示されます。

また、chipDataLengthがSSHでは4 * imwidth、VNCでは2 * imwidthになるため、そのbpp変数が追加されました。なぜこれが違うのですか?このコードを双方向で機能させるにはどうすればよいですか?

4

0 に答える 0