fopen/fseek/fgetc verkehrtherum

Persönliche Seite #385466
Lesenswert?

Hi Leutz.

Ich wende folgenden Code an, um aus einer Bitmap Datei die RAW daten zu
lesen.
1
#include "stdio.h"
2
#include "stdlib.h"
3

4
int main()
5
{
6

7
  FILE* filehandle1;
8
  int i;
9
  char temp[100];
10

11

12
  filehandle1 = fopen("C:\\ani\\2.bmp","r");
13

14
  fseek(filehandle1,-0x40, SEEK_END);
15

16
  
17
    for(i=0;i<64;i +=4)
18
    {
19
      itoa((unsigned char)~getc(filehandle1),temp,2);
20
      printf("%08.8s",temp);
21
      itoa((unsigned char)~getc(filehandle1),temp,2);
22
      printf("%08.8s",temp);
23
      itoa((unsigned char)~getc(filehandle1),temp,2);
24
      printf("%08.8s",temp);
25
      itoa((unsigned char)~getc(filehandle1),temp,2);
26
      printf("%08.8s\n",temp);
27
    }
28

29

30
  fclose(filehandle1);
31

32
  return 0;
33
}

(4 Bytes pro Zeile)

Das Problem ist, dass das Bild Vertikal seitenverkehrt ist.
ich habe mal ein bild angehangen, welches ich durch das programm gejagt
habe. (Habe es nach GIF umgewandelt, da BMP nicht erlaubt ist hier). im
nächsten beitrag gibts dann das ergebnis.
Angehängte Dateien:
Persönliche Seite #385469
Lesenswert?

Jo!
1
#include "stdio.h"
2
#include "stdlib.h"
3

4
int main()
5
{
6

7
  FILE* filehandle1;
8
  int i;
9
  char temp[100];
10

11

12
  filehandle1 = fopen("C:\\ani\\2.bmp","r");
13

14
  fseek(filehandle1,-0x40, SEEK_END);
15

16
  
17
    for(i=0;i<64;i +=4)
18
    {
19
      fseek(filehandle1, -4-i, SEEK_END);
20
      itoa((unsigned char)~getc(filehandle1),temp,2);
21
      printf("%08.8s",temp);
22
      itoa((unsigned char)~getc(filehandle1),temp,2);
23
      printf("%08.8s",temp);
24
      itoa((unsigned char)~getc(filehandle1),temp,2);
25
      printf("%08.8s",temp);
26
      itoa((unsigned char)~getc(filehandle1),temp,2);
27
      printf("%08.8s\n",temp);
28
    }
29

30

31
  fclose(filehandle1);
32

33
  return 0;
34
}

funktioniert!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren