我正在使用Qt,我是Qt的新手。我從特定端口的服務器獲取字符串數據流。將字符串數據轉換爲二進制圖像
我收到1和0。每次我接收這樣一行
1111110001111111111111111111100000000000011111111111
得到n
次數我需要從數據創建二值圖像文件之後。白色爲1
,黑色爲0
。
如何做到這一點?我已經實現了接收數據,但我不知道如何將這些數據轉換爲圖像。
請幫我找到解決這個問題的方法。
我正在使用Qt,我是Qt的新手。我從特定端口的服務器獲取字符串數據流。將字符串數據轉換爲二進制圖像
我收到1和0。每次我接收這樣一行
1111110001111111111111111111100000000000011111111111
得到n
次數我需要從數據創建二值圖像文件之後。白色爲1
,黑色爲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))
}
}
}
NxM
)NxM
二維數組由NxM
元素組成)。QImage
類。創建QImage
對象,傳遞給構造函數height
和width
,使用其方法fill
圖像。要設置像素的某種顏色,可以使用QImage
的方法setPixel (int x, int y, uint index_or_rgb)
。就是這樣。祝你好運!
謝謝。我創建了圖像併發布了我的代碼:) – Saravanan 2013-03-14 11:46:23
來自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);
感謝您的幫助我創建的映像。這裏我的代碼
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-14 07:46:43
是的。 500x500圖片需要構建 – Saravanan 2013-03-14 08:03:32