Każda bibioteka działa nieco inaczej, ale zasada jest mniej więcej taka że dostaniesz tablicę bajtów (zwykle jednowymiarową) która będzie zawierać kolejne linie poziome, przykładowo obrazek 3x2 pixele
a1 a2 a3
b1 b2 b3
będzie przedstawiony w tablicy jednowymiarowej: [ a1, a2, a3, b1, b2, b3]
Od obrazka zależy ile bajtów przypada na jeden piksel, np obrazek z paletą 16 bitów będzie miał 2 bajty na piksel. Musisz wiedzieć w jakim formacie dostałeś bitmapę od biblioteki, jeżeli jest to np RGB_565 to wiesz że jeden pixel ba dwa bajty( 5 + 6 + 5 = 16 bitów = 2bajty). więc żeby odczytać kolor robisz coś takiego:
Kopiuj
int color = bitmap[ (x + y * scanlineX) * 2 + 0] + (bitmap[ (x + y * scanlineX) * 2 + 1] << 8)
unsigned char r = ((color>>11) & 0x1F) << 3;
unsigned char g = ((color>>5) & 0x3F) << 2;
unsigned char b = ((color) & 0x1F) << 2;
x,y współrzędne piksela, scanlineX = ResX + uzupełnienie linii
histogramy dla składowych R G B :
Kopiuj
unsigned long rHist[256] = { 0 };
unsigned long gHist[256] = { 0 };
unsigned long bHist[256] = { 0 };
i teraz w pętli dekodującej kolor:
Kopiuj
rHist[r]++;
gHist[g]++;
bHist[b]++;