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 »

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 »

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 »

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: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: PNG-Datei binär einlesen und bearbeiten

Beitrag von Christian81 »

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 20:52
Wohnort: Landshut
Kontaktdaten:

Re: PNG-Datei binär einlesen und bearbeiten

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