Я ищу для отображения карт высот из видеоигры Battlefield 2 как изображения в моем приложении.
Я новичок в C++ и Qt, и это может быть прямолинейно, но у меня возникают проблемы с отображением изображения в оттенках серого 16-bit 1025x1025 2101250
. В файле нет заголовка. Мне нужен доступ к отображаемым пикселям (не обязательно должна быть точность пикселя), поэтому я могу указать на пиксель и получить его значение.С C++ и Qt как я могу отобразить 16-битный необработанный файл в качестве изображения?
То, что я пытался
Я загрузил бинарные данные в QByteArray
из QFile и я попытался использовать функцию QImage::fromData
, чтобы сделать изображение, но я делаю много ошибок и тратя много времени не очень далеко. Я надеюсь, что публикация здесь даст мне ключ (и), который мне нужно проделать. Вот мой код:
void LearningBinaryReader::setupReader()
{
qDebug("Attempting to open file..");
QFile file("HeightmapPrimary.raw");
if (!file.open(QFile::ReadOnly))
{
qDebug("Could not open file");
return;
} else {
qDebug() << file.fileName() << " opened";
}
QByteArray data = file.readAll();
file.flush();
file.close();
qDebug() << data.count() << "bytes loaded.";
}
Отсюда я в недоумении, что делать. Я прочитал некоторые из документации Qt, но я новичок. Мне нужно руководство в правильном направлении, чтобы понять эту проблему и получить решение.
Обращаем внимание: Я в значительной степени новичок, поэтому не предлагаю скидку на простые решения, о которых я, возможно, и не подумал. Я хотел бы сделать это, просто используя структуру Qt.
Когда я впервые попробовал это, я расстроился, когда он не сработал. Сегодня я попробовал еще раз, прочитав еще кое-что на C++ и Qt, и я действительно получил его для работы. Теперь я показываю изображение точно так, как хочу (мне нужно сделать какое-то преобразование, но это для другого вопроса). Я хотел бы поблагодарить вас за то, что вы нашли время, чтобы ответить на мой вопрос, и помогли мне с моими попытками начинающих. Также я благодарю других ответов, это то, что я мог понять! – aPerfectMisterMan