Моя рабочая среда: Qt 5.8 MSVC2015 64 бит, QT GraphicsView, Windows 7 64 бит
Я загружаю изображение из буфера (процесс-демон собирается отправить буфер изображения), но ему не удалось создать изображение с буфером.
QFile file("D:\\2.png");
if (!file.open(QFile::ReadOnly))
qDebug() << "Error failed to Open file";
QByteArray array = file.readAll();
array = array.toBase64();
QImage tempimage((uchar *)array.data(), 250, 250, QImage::Format_RGBX8888);
if (!tempimage.isNull()) {
///I always get this error
qDebug() << "Error!!! failed to create a image!";
}
Есть идеи, что мне здесь не хватает?
Почему вы конвертируете в base64?
Подождите, где вы конвертируете из PNG в плоскость изображения?
Пытаться bool QImage::loadFromData(const QByteArray &data, const char *format = Q_NULLPTR)
загрузить PNG вместо CT или с необработанными данными.
Если ваш проводной формат не PNG (а на самом деле это необработанные пиксельные данные в кодировке base64), то вы хотите конвертировать из base64.
Спасибо за все предложения & Помогите.
Я исправляю свои ошибки убрал конвертацию base64 & загруженный буфер с использованием loadFromData с QByteArray reinterpret_cast:
Вот окончательное решение:
QFile file("D:\\2.png");
if (!file.open(QFile::ReadOnly))
qDebug() << "Error failed to Open file";
QByteArray array = file.readAll();
QImage tempimage;
//// This very important to cast in below format, QByteArray don't work as arguments.
tempimage.loadFromData(reinterpret_cast<const uchar *>(array.data()),array.size());
if (tempimage.isNull()) {
qDebug() << "Error!!! failed to create a image!";
}