代码比较简陋,没有做防御性编程
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的大小,将数据分段传输,最后组合到一起