<< Chapter < Page | Chapter >> Page > |
Get the pixels in the image
Recall that a reference to the Picture object that encapsulates our image is stored in the variable named pic . (See Listing 2 .)
Listing 4 begins by calling the getPixels method on that reference.
All of the pixels in the image are returned in a one-dimensional array.
A reference to the array is stored in a local reference variable of type Pixel[] named pixelArray .
A for-each loop
A special kind of for loop (often called a for-each loop) is used to access and process each pixel in the array. You can learn more aboutthe for-each loop here . (A conventional for loop could also be used here.)
During each iteration of the loop...
The three statements inside the loop modify the red, green, and blue color values of a single pixel.
The first two statements invert the red and green color values by subtracting the values from 255.
The third statement in the loop sets the blue color value to zero.
Every pixel in the image will have been modified as described above when the loop terminates.
Not a reversible process
Because the blue color values were set to zero, the image has now been modified in an irreversible manner.
A reversible process
However, if the blue color values had also been inverted, the process would be reversible.
All that would be necessary to recover the original image would be to invert all of the pixels again.
An important process
Color inversion is a very important process in many areas of computing that involve images. The process is:
Often used to highlight selected images
For example, many software program invert all of the colors in an image when it is selected for some purpose, such as copying to the clipboard. Thenthe colors are restored to their original values when the image is deselected.
Next to redeye correction, color inversion is probably the most commonly used color modification algorithm in use in modern image processing.
Display again and terminate
The variable named pic still contains a reference to the original Picture object. However, the image that is encapsulated in that object has been significantly modified.
Listing 5 calls the explore method again, creating and displaying another PictureExplorer object that encapsulates a copy of the Picture object with the modified image.
Listing 5 . Display again and terminate. |
---|
pic.explore();}//end run method
}//end class Prob02Runner |
The result is shown in Figure 2 .
The end of the run method
Listing 5 also signals the end of the run method and the end of the Prob02Runner class.
Return control to main
The run method terminates and returns control to the main method in Listing 1 .
The code in the main method calls a getter method to get a reference to the Picture object.
The reference is passed to the println method, which displays the information about the Picture object in the last line of Figure 3 .
The program terminates
Then the main method terminates, at which time the program terminates and returns control to the operating system.
I encourage you to copy the code from Listing 6 , compile it and execute it. Experiment with the code, making changes, andobserving the results of your changes. Make certain that you can explain why your changes behave as they do.
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?