I wrote a sketch in Processing 3 that converted the picture on the left (original) to a picture that is more “bubbly” on the right (post-process). It does this by creating a circle with a diameter of 8 pixels who’s color is determined by the average of the 16 pixels it would be covering up. The idea is the same as saving an image to a lower resolution, but the pixels are represented by circles. Code below.
PImage img;
color copy;
color value;
void setup(){
noStroke();
size(472,592);
background(150);
img = loadImage(“CuteKitty.jpg”);
for(int i = 4; i < img.width; i += 8){
for(int j = 4; j < img.height; j += 8){
value = 0;
copy = img.get(i,j);
float redValue = (red(copy)+red(value))/2;
float greenValue = (green(copy)+green(value))/2;
float blueValue = (blue(copy)+blue(value))/2;
value = color(redValue,greenValue,blueValue);
copy = img.get(i+1,j);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
value = color(redValue,greenValue,blueValue);
copy = img.get(i+2,j);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i+3,j);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i,j+1);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
value = color(redValue,greenValue,blueValue);
copy = img.get(i+1,j+1);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i+2,j+1);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
value = color(redValue,greenValue,blueValue);
copy = img.get(i+3,j+1);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i,j+2);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i+1,j+2);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i+2,j+2);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i+3,j+2);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i,j+3);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i+1,j+3);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i+2,j+3);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
copy = img.get(i+3,j+3);
redValue = (red(copy)+red(value))/2;
greenValue = (green(copy)+green(value))/2;
blueValue = (blue(copy)+blue(value))/2;
fill(value);
ellipse(i,j,8,8);
}
save(“BubblyKitty.jpg”);
}
}