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
PNG-Datei binär einlesen und bearbeiten
Re: PNG-Datei binär einlesen und bearbeiten
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.
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
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
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
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: PNG-Datei binär einlesen und bearbeiten
Selbst dann ist QImage die richtige Wahl - dort kann man natürlich auch auf einzelne Pixel zugreifen...
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: PNG-Datei binär einlesen und bearbeiten
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.
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) 766-mal heruntergeladen