Código de execução:
void setup(){
size(640, 240);
PImage imgOriginal = loadImage("original.jpg"); //imagem original
PImage imgContraste = createImage(imgOriginal.width, imgOriginal.height, RGB); //cópia que recebe o efeito.
arraycopy(imgOriginal.pixels, imgContraste.pixels);
float inicio = 127.5;
float contraste = 0.5; //variável que define o valor do contraste aplicado
loadPixels();
for(int i=0; i<imgOriginal.width * imgOriginal.height; i++){
int r = imgContraste.pixels[i] >> 16 & 0xFF;
int g = imgContraste.pixels[i] >> 8 & 0xFF;
int b = imgContraste.pixels[i] & 0xFF;
int a = imgContraste.pixels[i] >> 24 & 0xFF;
//variável vermelho
r = int(r*(1.0 + (contraste)*((r-inicio)*.01)));
r = constrain(r, 0, 255);
//variável verde
g = int(g*(1.0 + (contraste)*((g-inicio)*.01)));
g = constrain(g, 0, 255);
//variável azul
b = int(b*(1.0 + (contraste)*((b-inicio))*.01));
b = constrain(b, 0, 255);
imgContraste.pixels[i] = (a << 24) | (r << 16) | (g << 8) | b;
}
//criação das imagens
image(imgOriginal, 0, 0);
image(imgContraste, width/2, 0);
}
No comments:
Post a Comment