QT Creator QString Ascii als Zahlen ausgeben



  • Hi Leute,

    ich sitze seit einiger Zeit an QT und versuche ein .RAW Bild pixelweise aus einer Datei auf eine QPixmap zu übertragen. Glaube das ist ein altes Thema und hoffe auf ein paar Tipps 🙂
    Also ich habe eine RAW Datei, welche nur Pixelwerte(512x256/8bit graustufen) enthält. Allerdings sind die Pixelwerte nicht als Zahlen, sondern vermutlich als Ascii-Code in der Datei abgelegt(Der Hexeditor kanns lesen^^).
    Also habe ich folgenden Code erstellt um die Daten als String einzulesen:

    QFile file(":/new/1.raw");
    if(file.open(QIODevice::ReadOnly|QIODevice::Text)){qDebug("File opened");}
    else{qDebug("File opened");}
    QTextstream out(&file);
    QString str = out.readAll();

    Damit kann ich in der Ausgabe eine Stringzeichenkette angezeigen, aber leider brauche ich eine Umwandlung zu Zahlenwerten im Bereich 0-255. Wobei das Stringformat in QT vermutlich auch Unicode ist und nicht Ascii...hier hänge ich im Moment und komme auch mit google/Qtdocu nicht weiter.
    Brauche also generell ein paar grundlegende Tipps zu den Datentypen und der Konvertierung?!?

    Ansonsten ist Qt super, habe mir auch schon ein leeres QImage mit 8Bit Farbtab. zum einlesen gebaut, was auch nicht ganz so einfach war 😃

    Beste Grüße,

    Olli



  • xxxOllixxx schrieb:

    Allerdings sind die Pixelwerte nicht als Zahlen, sondern vermutlich als Ascii-Code in der Datei abgelegt

    Das glaube ich jetzt wirklich nicht.

    Du kriegst auch vermutlich so wenige Antworten, weil du die Frage (den Titel) völlig falsch formuliert hast. "QT Creator QString Ascii als Zahlen ausgeben". Das macht keinen Sinn, interessiert keinen, und ist auch nicht dein Problem. Und die Leute, die sich mit Qt auskennen und sich die Mühe machen, so einen nach n00b schreienden Beitrag aufzumachen, kennen sich dann mit dem Raw Format nicht aus und machen den gleich wieder zu.

    Dein Problem ist erstmal, dass du nicht weißt, wie RAW Dateien aufgebaut sind. Das weiß ich jetzt auch nicht so genau, ich weiß nur, dass es da tausende verschiedene Formate gibt. Aber ich vermute, viele sind so aufgebaut, dass da einfach die Rohdaten in einem Format wie RGB16 hintereinander gespeichert sind. Es würde keinen Sinn machen, sie als ASCII zu speichern und deswegen würds mich jetzt überraschen, falls es tatsächlich so sein sollte.
    Was ich also probieren würde, wäre die Datei binär in ein QByteArray einzulesen und dann ein QImage daraus zu erstellen. Die QImage Klasse hat verschiedene Konstruktoren, da kannst du die Daten als uchar * und ein Format mitgeben. Beim Format musst du dann evtl. etwas rumprobieren, bis du sinnvolle Ergebnisse bekommst, aber ich könnte mir vorstellen, dass RGB16 funktioniert.



  • Wie mein Vorredner schon sagte ist einlesen als Text hier fehl am Platz. Das ist mit Sicherheit keine Textdatei.
    QFile hat eine Memberfunktion readAll() die ein QByteArray zurück liefert. Damit kannst du dann weiter arbeiten.
    Es gibt eine Menge Konvertierungsprogramme für raw Dateien (auch frei).
    z. Bsp. http://www.fotocommunity.de/info/RAW-Konverter


Anmelden zum Antworten