Qt使用loadFromData获得CRC错误
我使用char*数组创建图像,原始数据是PNG。我肯定是的,因为我可以读取PNG文件头“1378787113102610” 代码如下: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))); .... 但当
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错误。这是大小问题。谢谢