W C ++ i Qt jak wyświetlić 16-bitowy surowy plik jako obraz?
Chcę wyświetlać mapy wysokości z gry wideo Battlefield 2 jako obrazy w mojej aplikacji.
Jestem nowym użytkownikiem C ++ i Qt i może to być proste, ale problem z wyświetlaniem skali szarości16-bit 1025x1025 2101250
obraz bajtów. Plik nie zawiera nagłówka. Potrzebuję dostępu do wyświetlanych pikseli (nie musi to być precyzja pikseli), więc mogę wskazać piksel i uzyskać jego wartość.
Co próbowałem
Dane binarne załadowałem doQByteArray
z QFile i próbowałem użyćQImage::fromData
funkcja tworzenia obrazu, ale robię wiele błędów i spędzam dużo czasu, nie robiąc zbyt wiele. Mam nadzieję, że opublikowanie tutaj da mi wskazówkę (e), którą muszę rozwinąć. Oto mój kod:
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.";
}
Od tego momentu tracę to, co robić. Przeczytałem część dokumentacji Qt, ale będąc nowym, potrzebuję przewodnika we właściwym kierunku, aby zrozumieć ten problem i uzyskać rozwiązanie.
Proszę zanotować Jestem prawie początkującym, więc nie dyskontuj łatwych rozwiązań, o których mógłbym nie myśleć. Chciałbym to zrobić za pomocą frameworka Qt.