Qt 二进制读取图片->图片分片传输

代码比较简陋,没有做防御性编程

void Widget::on_pushButton_clicked(bool checked)
{
    
    
    QFile file("./s2.png");

    char* buff = NULL;
    int buffSize = 0;
    int nSize = 0;
    if(file.open(QIODevice::ReadOnly))
    {
    
    
        nSize = file.size();
        QDataStream in(&file);

        do
        {
    
    
            buff = new char[nSize + 1];
        }while(buff == NULL);

        buffSize = in.readRawData(buff, nSize);
    }

    QFile file2("./s3.txt");
    if(file2.open(QIODevice::WriteOnly))
    {
    
    
        QDataStream out(&file2);
        out.writeRawData(buff, nSize);
    }

    QPixmap pix;
    pix.loadFromData(reinterpret_cast<uchar*>(buff), buffSize);
    ui->label->setPixmap(pix);

    pix.save("end", "PNG");

    if(buff) delete[] buff;
}

点击pushbutton,右边的 label 会显示对应图片
在QImage中也有对应的 loadFromData() 这个函数,可以查看一下官方文档
在这里插入图片描述
pix.save(…) 会将图片以指定格式存盘
在这里插入图片描述
需要改一下后缀,这里改为 .png
在这里插入图片描述
顺利打开

s3.txt 内的数据:
在这里插入图片描述
在这里插入图片描述
如果需要将图片分片传输:
可以判断buffSize的大小,将数据分段传输,最后组合到一起
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/TheKoi/article/details/124598131