Converting rgb color to a 256 color palette
in
Programming Questions
•
3 years ago
I would like to input a color using the rgb method example color(255,12,23) and develop an algorithm that returns a color in the range of the 256 colour palette where 1 = base color , 2 = base color , etc.
I want to merge four images together using the r,g,b,a fields in the pixel.
I am using a weighted method. The results are ok but I want to know how to get the above done
I want to merge four images together using the r,g,b,a fields in the pixel.
I am using a weighted method. The results are ok but I want to know how to get the above done
- public int secnum = 5;
PImage [] karl=new PImage[secnum];
public String [] file= new String[secnum];
public int w=255;
public int h=255;
public boolean overit= false;
void setup(){
if (!overit){
for (int x=0;x<karl.length;x++){
karl[x]=createImage(w,h,ARGB);
}
}
file[1]="717090_m.jpg";
file[0]="6523329_m2.jpg";
file[2]="8442245_m.jpg";
file[3]="12792853_m.jpg";
if (overit){
for (int x=0;x<karl.length-1;x++){
// if (file[x]!=null)
karl[x]=loadImage(file[x]);
if(x>0 && ( karl[0]!=null)){
if (karl[x].width != karl[0].width || karl[x].height!=karl[0].height){
karl[x].resize(karl[0].width,karl[0].height) ;
}
}
}
karl[4]=createImage(karl[0].width,karl[0].height,ARGB);
}
for (int x=0;x<w;x++){
for (int y=0;y<h;y++){
int pos = x+w*y;
if (!overit){
karl[0].pixels[pos]=color(width-x,y,height-y);
karl[1].pixels[pos]=color(height-y,width-x,x-y);
karl[2].pixels[pos]=color(y,x-y,height-y);
karl[3].pixels[pos]=color(width-y,y-x,height-x);
}
float rr1 = _fr2(karl[0].pixels[pos]);
float rr2 = _fr2(karl[1].pixels[pos]);
float rr3 = _fr2(karl[2].pixels[pos]);
float rr4 = _fr2(karl[3].pixels[pos]);
float gg1 = _fg2(karl[0].pixels[pos]);
float gg2 = _fg2(karl[1].pixels[pos]);
float gg3 = _fg2(karl[2].pixels[pos]);
float gg4 = _fg2(karl[3].pixels[pos]);
float bb1 = _fb2(karl[0].pixels[pos]);
float bb2 = _fb2(karl[1].pixels[pos]);
float bb3 = _fb2(karl[2].pixels[pos]);
float bb4 = _fb2(karl[3].pixels[pos]);
float aa1 = alpha(karl[0].pixels[pos]);
float aa2 = alpha(karl[1].pixels[pos]);
float aa3 = alpha(karl[2].pixels[pos]);
float aa4 = alpha(karl[3].pixels[pos]);
karl[4].pixels[pos]=color((rr1+rr2+rr3+rr4)/4,(gg1+gg2+gg3+gg4)/4,(bb1+bb2+bb3+bb4)/4,(aa1+aa2+aa3+aa4)/4);
}
}
if (overit){
w=karl[0].width;
h=karl[0].height;
}
size(w,h,P3D);
image(karl[4],0,0);
}
color _fr2(color col){
color retval = col >> 16 & 0xff;
return retval;
}
color _fg2(color col){
color retval =col >> 8 & 0xff;
return retval;
}
color _fb2(color col){
color retval = col & 0xff;
return retval;
}
1