<< 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:

  • Computationally cheap
  • Very fast
  • Usually visually obvious
  • Totally reversible

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.

Run the program

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.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask