场景:有一副图像,事先已经因为各种需要被读取到了内存中,且不可再根据路径读取,只能读取内存中的数据转为QImage
百度过好久,没有一个帖子说的特别详细,解释的特别清楚,在此,我做下记录,以备不时之需。
//即使在已经知道图像宽高和格式的情况下,第一种方法依然无法成功转换
//方法1 不行
QImage image((unsigned char*)imgData,1920,1080,QImage::Format_RGB32);
//方法2 QByteArray也可以
image.loadFromData((unsigned char*)imgData,readLen,"JPG");
//方法3 QByteArray也可以
image = image.fromData((unsigned char*)imgData,readLen,"JPG");
我在使用fromData的时候,忽略了fromData的返回值,一直以为不能转换,后来才发现需要用image去接收转换结果
函数原型:
bool loadFromData(const uchar *buf, int len, const char *format = nullptr);
bool loadFromData(const QByteArray &data, const char *aformat = nullptr);
static QImage fromData(const uchar *data, int size, const char *format = nullptr);
static QImage fromData(const QByteArray &data, const char *format = nullptr);
参数解释:
参数1:无符号字符型数据或者QByteArray数据
参数2:数据长度
参数3:需要转为什么格式的图片,选取错误可能会导致转换失败
照片支持格式列表:
小做记录,以时刻警醒自己。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)