Fehlerhafte fstreams < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 17:28 So 06.06.2010 | Autor: | Wuffel |
Aufgabe | Die Aufgabe ist es, ein Programm zu schreiben um Bitmap Dateien einzulesen. |
Hallo,
Ich habe eine Klasse geschrieben, mit deren Hilfe der Header und die Pixelinformationen eines Bitmaps ausgelesen werden. Jetzt habe ich den Fehler, dass abhängig von der Pixelfarbe teilweise Fehler beim einlesen der Datei auftreten.
Ich verwende dabei im Prinzip folgenden Code:
fstream datei
datei.open(filename,ios::in);
[...]
image[x][y][Color]=datei.get();
[...]
datei.close();
Das Problem ist jetzt, dass durch die get() Funktion anscheinend abhängig von der Pixelfarbe ein Fehler in der Dateibehandlung auftritt, was sich an datei.good()=false äußert. Bei einfachen mit Paint gemalten Bildern tritt der Fehler nicht auf, aber z.B. bei einem Farbverlauf im Bild, oder bei Fotos ist der Fehler sicher mit drin.
Im Moment ignoriere ich den Fehler, so dass die Datei einfach erneut geöffnet wird und der Pointer an die Position beim Absturz gesetzt wird.
Ich wäre sehr dankbar wenn jemand eine Idee hat woran das liegen könnte. Ich habe die komplette Klasse, deren Header und ein Programm welches das anwendet mal hier hochgeladen. Außerdem ist im Archiv ein Beispiel wo das ganze auf ein Bild angewandt wurde andem man die "fehlerhaften" Farben erkennt...
http://roulume.de/problem.rar
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:18 So 06.06.2010 | Autor: | felixf |
Hallo!
> Die Aufgabe ist es, ein Programm zu schreiben um Bitmap
> Dateien einzulesen.
>
> Ich habe eine Klasse geschrieben, mit deren Hilfe der
> Header und die Pixelinformationen eines Bitmaps ausgelesen
> werden. Jetzt habe ich den Fehler, dass abhängig von der
> Pixelfarbe teilweise Fehler beim einlesen der Datei
> auftreten.
>
> Ich verwende dabei im Prinzip folgenden Code:
>
> fstream datei
> datei.open(filename,ios::in);
> [...]
> image[x][y][Color]=datei.get();
> [...]
> datei.close();
>
> Das Problem ist jetzt, dass durch die get() Funktion
> anscheinend abhängig von der Pixelfarbe ein Fehler in der
> Dateibehandlung auftritt, was sich an datei.good()=false
> äußert. Bei einfachen mit Paint gemalten Bildern tritt
> der Fehler nicht auf, aber z.B. bei einem Farbverlauf im
> Bild, oder bei Fotos ist der Fehler sicher mit drin.
>
> Im Moment ignoriere ich den Fehler, so dass die Datei
> einfach erneut geöffnet wird und der Pointer an die
> Position beim Absturz gesetzt wird.
>
> Ich wäre sehr dankbar wenn jemand eine Idee hat woran das
> liegen könnte. Ich habe die komplette Klasse, deren Header
> und ein Programm welches das anwendet mal hier hochgeladen.
> Außerdem ist im Archiv ein Beispiel wo das ganze auf ein
> Bild angewandt wurde andem man die "fehlerhaften" Farben
> erkennt...
> http://roulume.de/problem.rar
Bei mir (Ubuntu, g++) laeuft das Programm ohne Fehler durch.
Vielleicht hilft es, die Datei als Binaerdatei zu oeffnen, und das explizit zu sagen?
LG Felix
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:37 Mo 07.06.2010 | Autor: | Wuffel |
Genau daran lags :) Danke für den Hinweis.
|
|
|
|