Seite 1 von 1
Image binär öffnen/speichern
Verfasst: 4. Dezember 2009 12:16
von toem
Hallo,
ich muss ein Image öffnen und die Daten binär in ein Textfile schreiben.
Gibt es hierzu Funktionen in QT?
Ich stell mich glaub ich ein wenig zu doof an.
Verfasst: 4. Dezember 2009 12:40
von RHBaum
Glaub wir können uns ned besser anstellen
ich muss ein Image öffnen und die Daten binär in ein Textfile schreiben.
versuch mal bissi aehm präziser zu werden !
Image, was iss denn das ? nen Bilddatei ? welches Format ?? bmp,jpeg,png ??
in ne textdatei ? was soll denn da drinne stehen ? das bild binaer codiert als octets ?
Wozu genau brauchst du das, vielleicht wird daraus klar was genau du willst !
Ciao ...
Verfasst: 4. Dezember 2009 12:51
von toem
Ich habe die Anforderung bekommen ein Image (Tiff) zu öffnen und das Bild als Binärdatei in eine Textdatei zu speichern.
Ich habs grade so probiert:
Code: Alles auswählen
QString theData;
QFile pic(img);
pic.open(QIODevice::ReadOnly);
QDataStream in(&pic); // read the data serialized from the file
in >> theData;
qDebug() << in;
Verfasst: 4. Dezember 2009 13:41
von RHBaum
ok, dann erklaer mal genauer, wie man eine Binaerdatei als textdatei speichert, weil davon hab ich keine Ahnung
Code: Alles auswählen
QDataStream in(&pic); // read the data serialized from the file
in >> theData;
Was erwartest du wenn du versuchst Texte aus einer binären Datei zu lesen ?
Zeig mal wie die Textdatei hinterher aussehen soll ca !
Ciao ...
Verfasst: 4. Dezember 2009 13:52
von toem
Also jetzt mach ich das so, das müsste stimmen:
Code: Alles auswählen
QString theData;
using namespace std;
ifstream is;
is.open(theImg, ios::binary);
char ch;
while (is.get(ch))
theData += ch;
Verfasst: 4. Dezember 2009 14:00
von franzf
Was spricht gegen
Dann hast du Binärdaten in nem Textfile

Verfasst: 4. Dezember 2009 14:08
von toem
Auch eine schöne Altenative, danke.
Noch ein Problem. Falls ich das ganze auf mehrere Arten (tif, bmp, etc) ausweiten möchte. Wie kann ich dann ermitteln, von welcher Art die Datei ist?
Verfasst: 4. Dezember 2009 14:33
von Mani99
Bei
ist es QFile glaub ich ziemlich egal welches format die bilddatei hat!
Verfasst: 4. Dezember 2009 15:02
von toem
Das war aber nicht meine Frage.
Verfasst: 4. Dezember 2009 15:18
von franzf
Sicher war das die richtige Antwort. Bei einem "Copy" wird einfach auf Dateisystemebene ein Duplikat der Ursprungsdatei angelegt. Da ist es wurscht, ob das ein Bild, ein Executable oder ein SQLite-db-file ist.
Wenn du das anders implementieren willst und je nach Bildformat eine andere Methode aufrufen, ist das entweder 1) unverlässlich oder 2) aufwändig.
1) du verlässt dich darauf, dass in einem ".jpeg" auf ein JPeg-Bild drinsteckt. Also eine rein Dateiendungs-basierte Unterscheidung.
2) Du schaust in den Dateiheader, und ermittels so, welches Format das ist. Denn ein böser Bub kann dir einen Streich spielen, und ein executable als .jpeg tarnen. Du clickst drauf und "Peng".
Oder deine Bild->Text-Routine funktioniert nicht, weil aus dem Bild nur Mist rauskommt