Qt使用loadFromData获得CRC错误

Qt使用loadFromData获得CRC错误,qt,png,Qt,Png,我使用char*数组创建图像,原始数据是PNG。我肯定是的,因为我可以读取PNG文件头“1378787113102610” 代码如下: QImage image; bool ret = image.loadFromData((const uchar*)p->appIcon,p->iconSize, "PNG"); p_button->setIcon(QPixmap::fromImage(image.scaled(ICON_WIDTH,ICON_HIGH))); .... 但当

我使用char*数组创建图像,原始数据是PNG。我肯定是的,因为我可以读取PNG文件头“1378787113102610”

代码如下:

QImage image;
bool ret = image.loadFromData((const uchar*)p->appIcon,p->iconSize, "PNG");
p_button->setIcon(QPixmap::fromImage(image.scaled(ICON_WIDTH,ICON_HIGH)));
....
但当它运行时,我得到了CRC错误:

libpng error: IDAT: CRC error
QImage::scaled: Image is a null image
Segmentation fault

是否有人可以提出一些可能导致此错误的原因?非常感谢。

您正在向
loadFromData
提供虚假数据。仅仅因为标题在那里,并不意味着其余的数据在那里。我通常的建议是:将数据转储到文件中,然后查看是否可以使用图像编辑程序打开它:

QByteArray data((const char*)p->appIcon, p->iconSize);
QFile file(QDir::homePath() + QDir::separator() + "test.png");
bool rc = file.open(QIODevice::WriteOnly);
Q_ASSERT(rc);
qint64 n = file.write(data);
Q_ASSERT(n == data.size());

当我将数据转储到文件时,我得到了无法读取的文件和相同的CRC错误。这是大小问题。谢谢