Python Pillow – Colors on an Image
In this article, we will learn Colors on an Image using the Pillow module in Python. Let’s discuss some concepts:
- A crucial class within the Python Imaging Library is that the Image class. It’s defined within the Image module and provides a PIL image on which manipulation operations are often administered. An instance of this class is often created in several ways: by loading images from a file, creating images from scratch, or as a result of processing other images. We’ll see all these in use.
- Any image consists of pixels, each pixel represents a dot in an image. A pixel contains three values and every value ranges between 0 and 255, representing the quantity of red, green, and blue components. The combination of those forms an actual color of the pixel.
- The ImageColor module contains color tables and converters from CSS3-style color specifiers to RGB tuples. This module is used by PIL.Image.Image.new() and the ImageDraw module, among others.
ImageColor module that contains various formats of representing colors. These formats are as follows:
- String: Colors can also be represented as strings such as red, green, blue, yellow. They are case insensitive.
- Hexadecimal Color: It is represented as: #rgb or #rrggbb. For example- #ffff00 represents yellow where red is 255, green is 255 and blue is 0. RGB would be a tuple-(255,255,0)
- Cylindrical: It is represented as HSL where H-hue, S-saturation, and L-lightness of color. For example- #ffff00 represents yellow where hue is 0.63, saturation is 1.00 and also the lightness value is 0.50.
Creating Images with colors
Here, we will create Images with colors using Image.new() method.
PIL.Image.new() method creates a new image with the given mode and size. Size is given as a (width, height)-tuple, in pixels. The color is given as a single value for single-band images, and a tuple for multi-band images (with one value for each band). We can also use color names. If the color argument is omitted, the image is filled with zero (this usually corresponds to black). If the color is None, the image is not initialized. This can be useful if you’re going to paste or draw things in the image.
Syntax: PIL.Image.new(mode, size, color)
- mode: The mode to use for the new image. (It could be RGB, RGBA)
- size: A 2-tuple containing (width, height) in pixels.
- color: What color to use for the image. Default is black. If given, this should be a single integer or floating point value for single-band modes, and a tuple for multi-band modes.
Return Value: An Image object.
Converting color string to RGB Color values
Using the ImageColor module, we can also convert colors to RGB format(RGB tuple) as RGB is very convenient to perform different operations. To do this we will use ImageColor.getgrb() method. The ImageColor.getrgb() Convert a color string to an RGB tuple. If the string cannot be parsed, this function raises a ValueError exception.
- color: A color string
Returns: (red, green, blue[, alpha])
(255, 255, 0) (255, 0, 0)
Converting color string to Grayscale values
The ImageColor.getcolor() Same as getrgb(), but converts the RGB value to a grayscale value if the mode is not color or a palette image. If the string cannot be parsed, this function raises a ValueError exception.
Syntax: PIL.ImageColor.getcolor(color, mode)
- color – A color string
Returns: (graylevel [, alpha]) or (red, green, blue[, alpha])
Change the color by changing the pixel values
We can also change the color of an image to some other color.