PNG-Datei binär einlesen und bearbeiten

Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Antworten
GBunge
Beiträge: 30
Registriert: 26. Mai 2008 12:12

PNG-Datei binär einlesen und bearbeiten

Beitrag von GBunge » 22. Dezember 2011 17:07

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

franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: PNG-Datei binär einlesen und bearbeiten

Beitrag von franzf » 23. Dezember 2011 11:03

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.

GBunge
Beiträge: 30
Registriert: 26. Mai 2008 12:12

Re: PNG-Datei binär einlesen und bearbeiten

Beitrag von GBunge » 29. Dezember 2011 11:57

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

Christian81
Beiträge: 7315
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: PNG-Datei binär einlesen und bearbeiten

Beitrag von Christian81 » 29. Dezember 2011 12:25

Selbst dann ist QImage die richtige Wahl - dort kann man natürlich auch auf einzelne Pixel zugreifen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung

upsala
Beiträge: 3946
Registriert: 5. Februar 2006 21:52
Wohnort: Landshut
Kontaktdaten:

Re: PNG-Datei binär einlesen und bearbeiten

Beitrag von upsala » 29. Dezember 2011 16:30

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.
Dateianhänge
steganografie.zip
(2.9 KiB) 396-mal heruntergeladen

Antworten