2013-03-14 91 views
1

我正在使用Qt,我是Qt的新手。我從特定端口的服務器獲取字符串數據流。將字符串數據轉換爲二進制圖像

我收到1和0。每次我接收這樣一行

1111110001111111111111111111100000000000011111111111 

得到n次數我需要從數據創建二值圖像文件之後。白色爲1,黑色爲0

如何做到這一點?我已經實現了接收數據,但我不知道如何將這些數據轉換爲圖像。

請幫我找到解決這個問題的方法。

+0

你知道圖像尺寸嗎? – 2013-03-14 07:46:43

+0

是的。 500x500圖片需要構建 – Saravanan 2013-03-14 08:03:32

回答

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)) 
      } 
     } 
    } 
1
  • 你必須知道你的圖像的尺寸(例如NxM
  • 根據圖像的尺寸,你必須分析字符串你得到了什麼(想就怎麼寫正確的週期,以獲得從一維數組NxM二維數組由NxM元素組成)。
  • 對於保存圖像數據,您可以使用QImage類。創建QImage對象,傳遞給構造函數heightwidth,使用其方法fill圖像。要設置像素的某種顏色,可以使用QImage的方法setPixel (int x, int y, uint index_or_rgb)

就是這樣。祝你好運!

+0

謝謝。我創建了圖像併發布了我的代碼:) – Saravanan 2013-03-14 11:46:23

0

來自Qt文檔: 「因爲QImage是一個QPaintDevice子類,QPainter可以用來直接繪製圖像。」

所以,你可以創建QImage的尺寸爲500×500

QImage image = QImage(500,500) 

,然後這個圖像

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

另一種方式是你的比特流保存到數組的char []上繪製簡單地創建的QImage格式爲Format_Mono或Format_MonoLSB。

QImage image = QImage(bitData, 500, 500, Format_Mono); 
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; 
} 
相關問題