PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PNG-Datei einlesen und bearbeiten



GBunge
22-12-2011, 14:56
Hallo alle,

in letzter Zeit beschäftige ich mich mit Steganographie: Allerdings bleibe ich gleich am Anfang hängen, weil ich die Bilddatei nicht in einen Puffer lesen kann. Ich habe es so versucht, kann aber nur selbstgeschriebene, binäre Dateien auf diese Art und Weise einlesen. Eine PNG-Datei wird 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();
}

Wer kann mir sagen, wo ich den gravierenden Fehler gemacht habe?

Gruss Günter Bunge

anda_skoa
23-12-2011, 16:47
Hmm, wenn du schon QCoreApplication benutzt, könntest du einfach QFile und QFile::readAll() benutzen.

Ciao,
_

locus vivendi
24-12-2011, 11:58
Allerdings bleibe ich gleich am Anfang hängen, weil ich die Bilddatei nicht in einen Puffer lesen kann. Ich habe es so versucht, kann aber nur selbstgeschriebene, binäre Dateien auf diese Art und Weise einlesen. Eine PNG-Datei wird nicht geöffnet.
Wenn man deinen Schnippsel erstmal um notwendige Header und Definition von FileSize ergänzt um ihn kompilierbar zu machen, dann öffnet er auch Png-Dateien. Mir ist auch nicht klar was da schiefgehen könnte.

Also: Poste ein kompilierbares Schnippsel mit einer Ausgabe zur Laufzeit, welche anzeigt, wo dein Problem liegt.

GBunge
29-12-2011, 09:48
Hallo anda_skoa,
du schriebst:


Hmm, wenn du schon QCoreApplication benutzt, könntest du einfach QFile und QFile::readAll() benutzen.

leider nutzt mir das garnichts, weil eine PNG_Datei garnicht erst geöffnet wird.

GBunge

anda_skoa
29-12-2011, 11:05
Wie locus_vivendi schon geschrieben hat, würde auch dein ursprünglicher Code funktionieren. Dein Problem mit den PNG Dateien muss also irgendwo außerhalb des Programms liegen, vielleicht Dateirechte?

Meine Verwundernung bezog sich lediglich auf das Mischen von APIs in einem Fall wo die entsprechende Qt Klasse einfach bequemer ist.

Ciao,
_

locus vivendi
29-12-2011, 11:14
[...] leider nutzt mir das garnichts, weil eine PNG_Datei garnicht erst geöffnet wird.
Wie schon geschrieben, die wird geöffnet. Dein Fehler liegt wo anders. Oder du interpretierst nur etwas als Fehler, was tatsächlich funktioniert.