Gå til innhold

[Hjelp] Lese bildefils pixel array


Anbefalte innlegg

Jeg holder på å skrive en funksjon som vil gi meg en array med bare RGB verdiene til en gitt BMP fil. Dette virker greit i utgangspunktet, men jeg har støtt på et problem som jeg ikke vet hvordan jeg skal løse. Enkelt sagt kan hvert pixel representeres av 1, 4, 8, 16, 24,eller 32 bits, men jeg vet bare hvordan jeg kan lese hele bytes ut av FILE streamen(fread();). Spørsmålet mitt er da hvordan jeg kan lese hvert pixel, også om de er representert av bare 1 eller 4 bits?

Lenke til kommentar
Videoannonse
Annonse

#include <iostream>

using namespace std;

unsigned char getPixelFromChar(unsigned char number, int pos, int bitsPerPixel)
{
char offset = (8/bitsPerPixel - pos - 1)*bitsPerPixel;
unsigned char mask = (~(0xFF << bitsPerPixel)) << offset;
return (number & mask) >> offset;
}

int main()
{
char number = 0xFE;
for(int x=0; x<4; x++)
	cout << (int)getPixelFromChar(number, x, 2) << " ";
int y;
cin >> y;
}

 

Her har du en funksjon "getPixelFromChar". Det denne gjør er at den tar som input en 8 bits (1 byte) char og leser ut en bestemt pixel fra den på possisjonen du ønsker. Om det bilde f.eks. har 4 bits per pixel. legger du ved 4 i funksjonen.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...