我正在从 a 中获取字节数据,我想从 aQImage
中QByteArray
写入数据QByteArray
,QVariantMap
但是在存储字节后,字节被更改并且图像无效......
我试图QByteArray
直接库存,但问题是我将从 Windows 手机、android 和 iOS 接收 QVariantMap(作为 JSON)。并且QByteArray
这些操作系统上不存在,所以我怀疑该.toByteArray
功能是否有效......
这是我尝试使用的示例,QString
但QString
填充时字节会更改...
QFile tmp("default_profile.jpg");
tmp.open(QIODevice::ReadOnly);
if (tmp.exists() == true)
{
QByteArray tab;
tab = tmp.read(tmp.size());
int i = 0;
char *data = tab.data();
QString str;
while (i != tmp.size())
{
if (i < 100)
qDebug() << "AVANT = " << " i = " << i << "[" << *data + '0' << "]";
i++;
str.append(*data);
++data;
}
QVariantMap *tmp = new QVariantMap();
(*tmp)["name"] = "test.jpg";
(*tmp)["data"] = str;
(*tmp)["size"] = tab.size();
(*tmp)["type"] = "PhonePic";
this->fileReceived("", "", tmp);
}
这是fileReceived
:
QFile tmp((*src)["name"].toString());
tmp.open(QIODevice::ReadWrite | QIODevice::Truncate);
char *test = (char *)malloc((*src)["size"].toInt());
QString str;
str = (*src)["data"].toString();
int i = 0;
char *data = const_cast<char *>(str.toStdString().c_str());
while (i != 8143)
{
if (i < 100)
qDebug() << "AFTER = " << " i = " << i << "[" << *data + '0' << "]";
i++;
++data;
}
qDebug() << tmp.write(str.toStdString().c_str(), (*src)["size"].toInt());
“AFTER” QString 的大小很好,但值不好......有人知道我做错了什么吗?或者也许知道我是如何做到的?
感谢那些愿意帮助我的人。