String 将字符串数据转换为二进制图像

String 将字符串数据转换为二进制图像,string,image,qt,image-processing,String,Image,Qt,Image Processing,我正在使用Qt,我对Qt是新手。我正在从服务器的特定端口获取字符串数据流 我收到1和0。每次我收到这样的一行 1111110001111111111111111111100000000000011111111111 在获得n次数后,我需要从数据创建二进制图像文件1,黑色的代码>0 如何做到这一点?我已经实现了接收数据,但我不知道如何将这些数据转换为图像 请帮我找到这个问题的解决方案。 您必须知道图像的尺寸(例如NxM) 根据图像的尺寸,您必须解析得到的字符串(考虑如何编写正确的循环,从包含Nx

我正在使用Qt,我对Qt是新手。我正在从服务器的特定端口获取字符串数据流

我收到1和0。每次我收到这样的一行

1111110001111111111111111111100000000000011111111111
在获得
n
次数后,我需要从数据创建二进制图像文件<白色的代码>1,黑色的代码>0

如何做到这一点?我已经实现了接收数据,但我不知道如何将这些数据转换为图像

请帮我找到这个问题的解决方案。

  • 您必须知道图像的尺寸(例如
    NxM
  • 根据图像的尺寸,您必须解析得到的字符串(考虑如何编写正确的循环,从包含
    NxM
    元素的1D数组中获得
    NxM
    二维数组)
  • 要保存图像数据,可以使用
    QImage
    class。创建
    QImage
    对象,传递给构造函数
    height
    width
    ,使用其方法填充
    图像。要设置像素的某些颜色,可以使用
    QImage
    s方法
    setPixel(int x、int y、uint index_或_rgb)
就这些。祝你好运

  • 您必须知道图像的尺寸(例如
    NxM
  • 根据图像的尺寸,您必须解析得到的字符串(考虑如何编写正确的循环,从包含
    NxM
    元素的1D数组中获得
    NxM
    二维数组)
  • 要保存图像数据,可以使用
    QImage
    class。创建
    QImage
    对象,传递给构造函数
    height
    width
    ,使用其方法填充
    图像。要设置像素的某些颜色,可以使用
    QImage
    s方法
    setPixel(int x、int y、uint index_或_rgb)
就这些。祝你好运

来自Qt文档: 由于QImage是QPaintDevice子类,QPainter可用于直接绘制图像

因此,您可以创建大小为500x500的QImage

QImage image = QImage(500,500)
然后在这张图上画

QPainter p(&image);
p.drawPoint(0,0);
p.drawPoint(0,1);
etc;
另一种方法是将位流保存到数组char[]中,并简单地使用format\u Mono或format\u monosb创建QImage

QImage image = QImage(bitData, 500, 500, Format_Mono);
从Qt文档: 由于QImage是QPaintDevice子类,QPainter可用于直接绘制图像

因此,您可以创建大小为500x500的QImage

QImage image = QImage(500,500)
然后在这张图上画

QPainter p(&image);
p.drawPoint(0,0);
p.drawPoint(0,1);
etc;
另一种方法是将位流保存到数组char[]中,并简单地使用format\u Mono或format\u monosb创建QImage

QImage image = QImage(bitData, 500, 500, Format_Mono);

你可以试着这样做

    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))
            }
      }
   }
QImage图像(500500,QImage::Format_Indexed8);

对于(int i=0;i您可以尝试这样做

    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))
            }
      }
   }
QImage图像(500500,QImage::Format_Indexed8);

对于(inti=0;i谢谢您的帮助,我创建了一个图像。这里是我的代码

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;
}
QImage测试类::GetImage(QString-rdata、int-iw、int-ih)
{
QImage*Image=新的QImage(iw、ih、QImage::Format_ARGB32);
对于(int i=0;isetPixel(QPoint(j,i),qRgb(255255));
}
}
返回*图像;
}

感谢您的帮助,我创建了一个图像。这是我的代码

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;
}
QImage测试类::GetImage(QString-rdata、int-iw、int-ih)
{
QImage*Image=新的QImage(iw、ih、QImage::Format_ARGB32);
对于(int i=0;isetPixel(QPoint(j,i),qRgb(255255));
}
}
返回*图像;
}

你知道图像尺寸吗?是的。500x500图像需要构建你知道图像尺寸吗?是的。500x500图像需要构建