Qt 如何在visualc+中将ByteArray字符串从json文件转换为qimage+;?

Qt 如何在visualc+中将ByteArray字符串从json文件转换为qimage+;?,qt,visual-c++,Qt,Visual C++,假设 您正在使用JSON库 v键中的数据是一个数字数组,包含PNG图像或QImage支持的其他图像格式的原始数据 然后,您需要先将v的值转换为某个STL容器,然后再将其转换为。以下是我的解决方案: json j1 = json::parse(strForJSON);'\\parsing json value' string imagesData = j1["key"].dump();'\\key name for arrayvalue in json' QImage img((const

假设

  • 您正在使用JSON库
  • v
    键中的数据是一个数字数组,包含PNG图像或QImage支持的其他图像格式的原始数据
然后,您需要先将
v
的值转换为某个STL容器,然后再将其转换为。以下是我的解决方案:

json j1 = json::parse(strForJSON);'\\parsing json value'
string  imagesData = j1["key"].dump();'\\key name for arrayvalue in json'
QImage img((const uchar*)imagesData.data(),WIDTH,HEIGHT,QImage::Format_RGB16);'\\creating image'
imshow("window", matImg);'\\show the image'
json j1=json::parse(strForJSON);
std::vector imagesData=j3[“v”].get();
QByteArray imagesDataArray(重新解释强制转换(imagesData.data()),imagesData.size());
QImage img;
bool loadSuccess=img.loadFromData(imagesDataArray);

请帮助我修复它,这是创建一些颜色组合,而不是一个精确的图像。请在JSON中显示数据好吗?编码是什么?base64?我不认为JSON可以包含二进制数据,所以应该对其进行某种编码。您可能希望将JSON示例附加到您的应答器中,因为没有base64编码。没有其他类型的编码,数据看起来像{“key”:[-119,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,3,-24,0,0,3,…];}
json j1 = json::parse(strForJSON);
std::vector<char> imagesData = j3["v"].get<std::vector<char>>();
QByteArray imagesDataArray(reinterpret_cast<const char*>(imagesData.data()),imagesData.size());
QImage img;
bool loadSuccess = img.loadFromData(imagesDataArray);