Wie kann ich mit C ++ und Qt eine 16-Bit-Rohdatei als Bild anzeigen?
Ich möchte in meiner Anwendung Höhenkarten aus dem Videospiel Battlefield 2 als Bilder anzeigen.
Ich bin neu in C ++ und Qt und es mag einfach sein, aber ich habe Probleme damit, Graustufen anzuzeigen16-bit 1025x1025 2101250
Bytes Bild. Die Datei enthält keinen Header. Ich benötige Zugriff auf die angezeigten Pixel (muss nicht pixelgenau sein), damit ich auf ein Pixel zeigen und dessen Wert abrufen kann.
Was ich ausprobiert habe
Ich habe die Binärdaten in ein geladenQByteArray
von einem QFile und ich habe versucht, das zu verwendenQImage::fromData
Funktion, um das Bild zu machen, aber ich mache viele Fehler und verbringe viel Zeit nicht sehr weit. Ich hoffe, dass ich durch das Posten hier die Hinweise bekomme, die ich brauche, um Fortschritte zu erzielen. Hier ist mein Code:
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.";
}
Von hier aus weiß ich nicht mehr, was ich tun soll. Ich habe einige der Qt-Dokumentationen gelesen, aber da ich neu bin, brauche ich eine Anleitung in die richtige Richtung, um dieses Problem zu verstehen und die Lösung zu finden.
bitte beachten Sie Ich bin so ziemlich ein Anfänger, also schätze einfache Lösungen, an die ich vielleicht nicht gedacht habe, nicht ein. Ich möchte dies nur mit dem Qt-Framework tun.