Avatar billede hygta Nybegynder
09. april 2003 - 15:14 Der er 4 kommentarer og
1 løsning

Fortolkning af BMP billede

Goddag her er en lille kode der skal fortolke et BMP-billede.

Hvordan får jeg udskrevet den første RGB værdi, som tre integers???

Headerens størrelse skulle gerne være 54 byte, hvorefter selve paletten skulle komme.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

  typedef struct BMPFilHead{ 
    char type[2];
    char size[4];
    char reserved1[4];
    char offset[4];
    char headerSize[4];
    char width[4];
    char height[4];

  }BMPhoved;

int main(void){
  FILE* filen = fopen("farver.bmp", "rb");
  char hhh[3000];
  BMPhoved* pointer = (BMPhoved*)hhh; 
  int y;
  int k;

  //char* matrix = (char*)malloc(pointer -> width[0] * pointer -> height[0] * 3)

  y = 0;
  while(hhh[y] != EOF){
    hhh[y] = getc(filen);
    y++;

  }

  fclose(filen);
  return 0;
}
Avatar billede arne_v Ekspert
09. april 2003 - 15:21 #1
Hvis paletten kommer lige efter headeren, så vil:

char* Palette = &hhh[sizeof(BMPhoved)];

jo pege på paletten.

Og hvis hver RGB værdi fylder en byte (jeg kan ikke huske
BMP format), så vil:
  Palette[0]
  Palette[1]
  Palette[2]
jo indeholde de 3 første RGB værdier.
Avatar billede jpk Nybegynder
09. april 2003 - 16:05 #2
Skal dit program køre under Windows eller..?
Avatar billede segmose Nybegynder
09. april 2003 - 17:05 #3
while(hhh[y] != EOF){

vil gå galt da hhh er char, EOF skal være i en int.
Avatar billede arne_v Ekspert
09. april 2003 - 17:09 #4
Når vi nu er ved at kigge på den løkke, så er selve testet jo også forkert.

  int c;

  y = 0;
  while((c = getc(filen)) != EOF){
    hhh[y] = c;
    y++;
  }
Avatar billede hygta Nybegynder
11. april 2003 - 09:49 #5
OK jeg tror jeg har fundet ud af det :-)
Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester