1

私はQtを使用していますが、Qtは初めてです。特定のポートのサーバーから文字列データのストリームを取得しています。

1 と 0 を受け取っています。このような 1 行を受け取るたびに

1111110001111111111111111111100000000000011111111111

n何回か取得した後、データからバイナリ イメージ ファイルを作成する必要があります。10用と黒用。

これを行う方法?受信データは既に実装していますが、このデータを画像に変換する方法がわかりません。

この問題の解決策を見つけるのを手伝ってください。

4

4 に答える 4

1
  • 画像の寸法を知っておく必要があります (例: NxM)
  • 画像の次元に応じて、取得した文字列を解析する必要があります (要素NxMで構成される 1D 配列から 2D 配列を取得する正しいサイクルの書き方を考えてください)。NxM
  • 画像データを保持するには、QImageクラスを使用できます。オブジェクトを作成し、コンストラクターQImageに渡し、そのメソッドを使用してイメージします。ピクセルの色を設定するには、 s methodを使用できます。heightwidthfillQImagesetPixel ( int x, int y, uint index_or_rgb )

それで全部です。幸運を!

于 2013-03-14T08:14:03.780 に答える
0

Qt ドキュメントから: 「QImage は QPaintDevice サブクラスであるため、QPainter を使用して画像に直接描画できます。」

したがって、500x500 のサイズの QImage を作成できます。

QImage image = QImage(500,500)

そして、この画像に描画します

QPainter p(&image);
p.drawPoint(0,0);
p.drawPoint(0,1);
etc;

もう 1 つの方法は、ビット ストリームを配列 char[] に保存し、フォーマット Format_Mono または Format_MonoLSB で QImage を作成することです。

QImage image = QImage(bitData, 500, 500, Format_Mono);
于 2013-03-14T08:21:32.287 に答える
0

あなたはこのようにしてみてください

    QImage Image(500,500, QImage::Format_Indexed8);
    for(int i=0;i<500/*image_width*/;i++)
    {
        for(int j=0;j<500/*image_height*/;j++)
        {
            QRgb value;
            if(data[i*j] == 0)/*the data array should contain all the information*/
            {
                value = qRgb(0,0,0);
                Image.setPixel(i,j,qGray(value))
            }
            else
            {
               value = qRgb(255,255,255);
               Image.setPixel(i,j,qGray(value))
            }
      }
   }
于 2013-03-14T08:25:57.717 に答える
0

助けてくれてありがとう、私はイメージを作成しました。ここにマイコード

QImage testClass::GetImage(QString rdata, int iw, int ih)
{
    QImage *Image=new QImage(iw,ih,QImage::Format_ARGB32);
    for(int i=0;i<ih;i++)
    {
        for(int j=0;j<iw;j++)
        {
            if(rdata.at((i*iw)+j) == '0')
                Image->setPixel(QPoint(j,i),qRgb(0,0,0));
            else
               Image->setPixel(QPoint(j,i),qRgb(255,255,255));
        }
   }
    return *Image;
}
于 2013-03-14T11:44:32.453 に答える