Image Reference
We have written byuimage
, a simple library that helps you to manipulate
images. Images are a collection of pixels:
Each pixel has a red, green, and blue value that is an integer in the range 0 to 255.
You can visit rgb-explorer to see how these colors combine to form the color of the pixel.
Installing byuimage
The most reliable way to install byuimage
is through PyCharm. Open the
File->Settings
(Windows) or File->Preferences
(MacOS) menu and select
Project
. You should see a your Conda environment and a list of packages
installed in that environment:
Click the +
and then type in byuimage
. Then click Install Package
.
Importing the library
To use byuimage
, you always need to import it using the following:
from byuimage import Image
Loading and showing images
To load an image from a file and then show it, do the following:
from byuimage import Image
image = Image('mount-timpanogos.jpeg')
image.show()
The command Image(filename)
creates an image from the given file name. The
command image.show
will open a window on your computer showing the image.
Creating an image
You can create a new, blank (white) image using:
new_image = Image.blank(width, height)
Image dimensions
You can get the height and width of an image using:
image.height
image.width
Looping over Pixels
To loop over the pixels in an image, use a for loop:
for pixel in image:
...
You can also loop over the pixels using their (x, y)
coordinates:
for y in range(image.height):
for x in range(image.width):
...
Getting a Pixel
You can get a pixel at a given (x,y)
coordinate using:
image.get_pixel(x,y)
Modifying Pixels
To modify a pixel, use:
pixel.red = 50
pixel.green = 100
pixel.blue = 150
Each pixel color can be an integer in the range 0 to 255.
For example, to modify all the pixels in an image, you can use this for loop:
for pixel in image:
pixel.red = 50
pixel.green = 100
pixel.blue = 150
Cheat Sheat
from byuimage import Image
- Load, create, and show
image = Image(file)
— load an image from a fileimage = Image.blank(width, height)
— create a blank image with the given height and widthimage.show()
— shows the image
- Width and height
image.width
— returns the image width in pixelsimage.height
— returns the image height in pixels
- Looping over pixels
for pixel in image:
— loop over all pixelsfor y in range(image.height):
— loop over all pixel Y valuesfor x range(image.width):
— loop over all pixel X values
- Getting and modifying pixels
image.get_pixel(x, y)
— get the pixel at the given (X, Y) coordinatepixel.red
— returns the red value of the pixelpixel.green
— returns the green value of the pixelpixel.blue
— returns the blue value of the pixelpixel.red = value
— sets the red value of the pixel to the given value (0 to 255)pixel.green = value
— sets the green value of the pixel to the given value (0 to 255)pixel.blue = value
— sets the blue value of the pixel to the given value (0 to 255)
Image Manipulations
Invert all pixels
for pixel in image:
pixel.red = 255 - pixel.red
pixel.green = 255 - pixel.green
pixel.blue = 255 - pixel.blue
Swap red, green, blue portions of each pixel
for pixel in image:
red = pixel.red
pixel.red = pixel.green
pixel.green = pixel.blue
pixel.blue = red
Darken an image
for pixel in image:
pixel.red = pixel.red * 0.5
pixel.green = pixel.green * 0.5
pixel.blue = pixel.blue * 0.5
Change green pixels to black
for pixel in image:
average = (pixel.red + pixel.blue + pixel.green) / 3
if pixel.green > average:
pixel.red = 0
pixel.blue = 0
pixel.green = 0
Copy an image to a new image
To copy an original image into a new image, you can do the following:
original = Image("mount-timpanogos.jpeg")
copy = Image.blank(original.height, original.width)
for y in range(original.height):
for x in range(original.width):
original_pixel = original.get_pixel(x, y)
copy_pixel = copy.get_pixel(x, y)
copy_pixel.red = original_pixel.red
copy_pixel.green = original_pixel.green
copy_pixel.blue = original_pixel.blue