August 29, 2001
OfflineKan inte någon vänlig själ hjälpa mig...Jag vill ordna en lista med rgb värden(pixlar om du så vill) efter r+g+b, så att tex. svart kommer först, och vit sist...Detta hade jag tänkt att använda för att sänka färgdjupet i en 24 bitars bild, till 8 bitar, genom allas våran median cut(ni som har psp dyl. vet vad jag menar)...
Här är min nuvarande kod:
void MedianCut( unsigned char *screen, unsigned char *pal )
{
bool bajs[64000];
memset(&bajs[0],1,64000*sizeof(bool));
unsigned char screen2[192000];
long dist = 10000, last = 0, off = 0;
//Sort pixels after the sum R + G + B
for( unsigned short x = 0; x < 64000; x++ )
{
if( bajs[x] )
{
dist = screen[x*3] + screen[x*3+1] + screen[x*3+2];
if( dist >= last && dist <= dist )
{
dist = dist;
last = dist;
screen2[off*3] = screen[x*3];
screen2[off*3+1] = screen[x*3+1];
screen2[off*3+2] = screen[x*3+2];
off++;
bajs[x] = 0;
x = 0;
}
}
}
//memcpy(&screen2[0],screen,192000);
FILE *file = fopen("bajs.raw","wb");
fwrite(&screen2[0],1,192000,file);
fclose(file);
for( short x = 0; x < 256; x++ )
{
pal[x*3] = screen[int(192000*(x/256.0f))];
pal[x*3+1] = screen[int(192000*(x/256.0f)+1)];
pal[x*3+2] = screen[int(192000*(x/256.0f)+2)];
}
}
1 Guest(s)









Log In
