Seite 1 von 1

PNG-Datei binär einlesen und bearbeiten

Verfasst: 22. Dezember 2011 16:07
von GBunge
Hallo alle,

seit ein paar Tagen will ich mich mit Steganographie beschäftigen. Nur bleibe ich gleich in den ersten Schritten hängen, weil ich keine Bilddatei einlesen kann. Ich habe es mit diesem Code versucht. Leider kann ich auf diese Art nur selbstgeschriebene, binäre Dateien in einen Puffer einlesen. Bilddateien ( .png ) werden nicht geöffnet!

_____________________________________________
#include <iostream>
#include <fstream>
using namespace std;

int main( int argc, char *argv[])
{
QCoreApplication a(argc, argv);
fstream FileBin( "bank_house2.png",ios::in|ios::out|ios::binary);

if( FileBin.is_open())
{
FileBin.seekg( 0, ios::end );
FileSize = streamoff( FileBin.tellg());
FileBin.seekg(0, ios::beg);
char* pBuffer = new char[FileSize];
FileBin.read( pBuffer, FileSize );
// hier Inhalt es Puffers bearbeiten
delete[] pBuffer;
FileBin.close();
}
return a.exec();
}
----------------------------------------------------------
Wo habe ich den entscheidenden Fehler gemacht?

Gruss Günter Bunge

Re: PNG-Datei binär einlesen und bearbeiten

Verfasst: 23. Dezember 2011 10:03
von franzf
Du verwendest doch Qt, warum willst du dann die Daten selber auslesen? Gibt doch QImage/QPixmap/...
Wenn sich Bilder wirklich nur in der Endung unterscheiden würden, die Daten selber aber immer gleich angeordnet wären (rohe RGB-triples o.Ä.) dann könnte man sich doch eigentlich die Entwicklung und Pflege verschiedener Bildformate schenken, oder?
Um jetzt selber png auslesen zu können, musst du erstmal schauen, wie die aufgebaut sind (ist sicher irgendwo dokumentiert), daraus kannst du dir dann einen Algorithmus herleiten, mit dem dann vielleicht das Auslesen klappt. Ist dir das kompliziert, gibt es noch libpng.
Oder am einfachsten (wie bereits gesagt) gleich Qt-Klassen fürs Auslesen/Speichern nehmen.

Re: PNG-Datei binär einlesen und bearbeiten

Verfasst: 29. Dezember 2011 10:57
von GBunge
Hallo franzf,
grundsätzlich hast du recht, warum das Rad neu erfinden!

Ich will aber Steganografie testen. d.h. Daten in Bildern verstecken. Dazu muss ich natürlich
das Bild in einer byteweise gespeicherten Form im Arbeitsspeicher vorliegen haben.

Gruss GBunge

Re: PNG-Datei binär einlesen und bearbeiten

Verfasst: 29. Dezember 2011 11:25
von Christian81
Selbst dann ist QImage die richtige Wahl - dort kann man natürlich auch auf einzelne Pixel zugreifen...

Re: PNG-Datei binär einlesen und bearbeiten

Verfasst: 29. Dezember 2011 15:30
von upsala
Hab mal schnell was programmiert.
Qt-Projekt daraus machen und kompilieren muss ich ja nicht erklären.

Ansonsten Bild öffnen, Text ändern, Bild as .png sichern. Beim nächsten öffnen sollte der eingebetete Text erscheinen.