Image-2 Code and Images

In this section, we'll look at simple code to load and manipulate a digital image. Here we'll just manipulate one pixel at a time. In the next section, scaling up to operate on thousands of pixels at a time.

x.png

The image "x.png" is very simple - it's a very small black square with a white "x" at its center. Here is x.png:

PNG (Portable Network Graphics) is a format to store an image in a computer file, like JPG and GIF.

x.png Code Example

Our first image code example loads the x.png image into a variable and prints it. Run the code to see what it does. Try changing the image.setZoom(20) to use the number 10 or 30 instead.


image2-1

 

pixel.setRed(255) Example


image2-2

 

Pixel Set Red/Green/Blue Functions

noun.verb() Pattern

Aside: Image Functions Reference

For later reference, there is a separate image functions reference page which lists in one place all the image functions such as pixel.setRed(number) we are using here.

Experiments On Pixels (0, 0) and (1, 0)

To see how image.getPixel(x, y) and pixel.setRed(number) etc. work, we'll try the experiments listed below (use the "show" button to see the solution code).


image2-3

 

Demo the first few, ask class to do the rest.

Example ProblemsSolution
Set pixel (0, 0) to be green.
pixel = image.getPixel(0, 0);
pixel.setGreen(255);
Set pixel (0, 0) to be yellow.
// Set red and green to 255, leave blue at 0
pixel = image.getPixel(0, 0);
pixel.setRed(255);
pixel.setGreen(255);
Set pixel (1, 0) to be yellow. Where is that pixel?
pixel = image.getPixel(1, 0);
pixel.setRed(255);
pixel.setGreen(255);
// getPixel(1, 0) retrieves the pixel
// one to the right of pixel (0, 0).
Set pixel (0, 0) to white.
pixel = image.getPixel(0, 0);
pixel.setRed(255);
pixel.setGreen(255);
pixel.setBlue(255);
What is the x,y of the pixel below the origin? Set that pixel to be white.

pixel = image.getPixel(0, 1);
pixel.setRed(255);
pixel.setGreen(255);
pixel.setBlue(255);

Multiple Pixels - Red Diagonal Problem

Change multiple pixels. Technique: assign "pixel" variable with different x,y to access different pixels. This code changes the origin pixel and the pixel to its right to be red:


image2-4

 

Example ProblemsSolution
Set origin to be green, pixel below it red. (You Do It)
// Set pixel at (0, 0) to green
pixel = image.getPixel(0, 0);
pixel.setGreen(255);

// Then change pixel variable to refer to (0, 1)
pixel = image.getPixel(0, 1);
pixel.setRed(255);
The pixel at (2, 2) is white. Set it to be red. Add print(pixel); lines to illuminate what's going on. (Demo, a bit tricky)
pixel = image.getPixel(2, 2);
print("before", pixel);
pixel = image.getPixel(2, 2);
pixel.setRed(255);  // does not work by itself!
pixel.setGreen(0);
pixel.setBlue(0);
print("after", pixel);

Red diagonal problem: Set 3 pixels to pure red, origin, below it to the right, and below that to the right. (You Try It)
pixel = image.getPixel(0, 0);
pixel.setRed(255);

pixel = image.getPixel(1, 1);
pixel.setRed(255);

pixel = image.getPixel(2, 2);
pixel.setRed(255);  // actually works without this line
pixel.setGreen(0);  // need to change from 255
pixel.setBlue(0);