QT5.9
通过面阵相机采集的图像,是BMP格式,现要将BMP图片的数据在内存中直接转为jpg格式直接通过tcpip发送客户端
问题,QT中有方法可以将bmp图片数据在内存中直接转为jpg?(不要保存文件,也不使用第三方库)
使用 QImage::fromData
构建 QImage
对象,再使用 QImage::save
保存到 QByteArray
,详见 官方文档
QImage ImageSrc;
QImage ImageDst;
QBuffer jpgBuffer;
ImageSrc.load("../Image/ZBG.bmp"); // 1920X1080
ImageDst = ImageSrc.scaled(960, 540, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
ImageDst.save(&jpgBuffer, "JPG");
/* 经过以上步骤就可以实现内存转换,并将结果数据保存至jpgBuffer中。
save函数有两种原型定义,
其一: bool save(const QString &fileName, const char *format = Q_NULLPTR, int quality = -1) const;
参数输入路径可直接保存为文件,
其二:bool save(QIODevice *device, const char *format = Q_NULLPTR, int quality = -1) const;
另一种参数为QIODevice或者QIODevice的派生类实体,即可将数据输出*/