Qt读取图片有问题-应以二进制文件读取
- 通过二进制图区QImage
bool GetImg(QImage &pix, QString &strFileName)
{
QFile file(strFileName);
char *m_pBuff = NULL;
int m_nBuffSize;
if (!file.open(QIODevice::ReadOnly))
{
QMessageBox::information(NULL, tr("Warning"), tr("File open fail."));
return false;
}
int nSize = file.size();
do
{
m_pBuff = new char[nSize + 1];
} while (m_pBuff == NULL);
QDataStream in(&file);
m_nBuffSize = in.readRawData(m_pBuff, nSize);
if (m_nBuffSize == -1)
{
return false;
}
if (!pix.loadFromData(reinterpret_cast<unsigned char*>(m_pBuff), m_nBuffSize))
{
return false;
}
return true;
}
- 通过二进制读取QPixmap
bool GetPix(QPixmap &pix,QString &strFileName)
{
QFile file(strFileName);
char *m_pBuff = NULL;
int m_nBuffSize;
if (!file.open(QIODevice::ReadOnly))
{
QMessageBox::information(NULL, tr("Warning"), tr("File open fail."));
return false;
}
int nSize = file.size();
do
{
m_pBuff = new char[nSize + 1];
} while (m_pBuff == NULL);
QDataStream in(&file);
m_nBuffSize = in.readRawData(m_pBuff, nSize);
if (m_nBuffSize == -1)
{
return false;
}
if (!pix.loadFromData(reinterpret_cast<unsigned char*>(m_pBuff), m_nBuffSize))
{
return false;
}
return true;
}