In this article, we will learn how to convert a NumPy Array to an image in Python.
Table Of Contents
- How the images are stored in a computer?
- Convert NumPy Array to Image using fromarray() from pillow library
- Convert NumPy Array to Image using imsave() from matplotlib.pyplot
- Convert NumPy Array to Image using imwrite() from imageio module
- Convert NumPy Array to Image using imwrite() from opencv module
Given a NumPy array we need to convert it into an image in Python.
How the images are stored in a computer?
The usual black and white images are represented using a matrix. Where each cell in the matrix represent a pixel and the pixel color is either black or white. The value in the cell represent the intensity of the color, like 0 is for black and 255 is for white. The color intensity changes with the numbers in cell. So we will create a numpy array with size as (144 x 144) and fill it with random values between 0 and 255. Later we will convert this 2D NumPy Array into an image.
There are multiple ways to convert a NumPy Array to an image in Python. Lets discuss all the methods one by one with proper approach and a working code example
Convert NumPy Array to Image using fromarray() from pillow library
The pillow library has an image module. This image module provide a fromarray() method, to convert the array into any image format. We will create a 2D NumPy Aarray and will pass that array to the fromarray() method.
Let’s have a quick look at the functions that we are going to use in this example,
Frequently Asked:
- Convert NumPy array to list in python
- Convert an PIL image to a NumPy Array in Python
- Convert a NumPy Array to an image in Python
- Convert Pandas Dataframe To NumPy Array
Syntax of randint()
random.randint(low, high=None, size=None, dtype=int)
- Parameters:
- low = least value of the random number to be generated.
- high = highest value of the random number to be generated.
- size = This specifies the shape of the numpy array to be created
- dtype = datatype of array, by default it is int.
- Returns:
- Returns a numpy array filled with random numbers
Syntax of fromarray()
PIL.Image.fromarray(Array)
- Parameters:
- Array = Array which needs to be converted into image.
- Returns:
- Returns a Image object.
Syntax of save()
Image.save(fp)
- Parameters:
- fp = Name or path of the image file to be saved.
- Returns:
- None
The Approach to convert NumPy Array to an Image:
- Import numpy library and create 2D NumPy array using randint() method.
- Pass this array to the fromarray() method. This will return an image object.
- Save the image to the filesystem using the save() method.
Source Code
from PIL import Image import numpy as np # Creating the 144 X 144 NumPy Array with random values arr = np.random.randint(255, size=(144, 144), dtype=np.uint8) # Converting the numpy array into image img = Image.fromarray(arr) # Saving the image img.save("Image_from_array.png") print(" The Image is saved successfully")
Output:
The Image is saved successfully
It will create an image file with name “Image_from_array.png” in the same folder. Image file will be like this,

If you get an error like this,
ModuleNotFoundError: No module named 'PIL'
Then use the following command to install the pillow module,
pip3 install Pillow
Convert NumPy Array to Image using imsave() from matplotlib.pyplot
The matplotlib.pyplot module provide an imsave() method to convert the array into any image format. Create a numpy array and pass that array to the imsave() method.
Let’s have a quick look at the functions that we are going to use in this example,
Syntax of imsave()
matplotlib.pyplot.imsave(fp, Array)
- Parameters:
- Array = Array which needs to be converted into image.
- fp = Name or path to save the image.
- Returns:
- None
The Approach to convert NumPy Array to an Image:
- Import numpy library and create 2D NumPy array using randint() method.
- Pass this array to the imsave() method.
- The image will be saved to the path mentioned in the method arguments.
Source Code:
import matplotlib.pyplot as mp import numpy as np # Creating the 144 X 144 NumPy Array with random values arr = np.random.randint(255, size=(144, 144),dtype=np.uint8) # Converting the NumPy Array into an image mp.imsave("Image_from_array.png", arr) print(" The Image is saved successfully ")
Output:
The Image is saved successfully
It will create an image file with name “Image_from_array.png” in the same folder. Image file will be like this,

It might be possible that you can get an error, if matplotlib module is not installed. Like,
ModuleNotFoundError: No module named 'matplotlib'
Then use the following command to install the matplotlib module,
pip3 install matplotlib
Convert NumPy Array to Image using imwrite() from imageio module
The imageio module provide imwrite() method to convert the array into any image format. We will create a numpy array and pass the array to imwrite() method.
Syntax of imwrite()
imageio.imwrite(fp, Array)
- Parameters:
- Array = Array which needs to be converted into image.
- fp = Name or path to save the image.
- Returns:
- None
The Approach to convert NumPy Array to an Image:
- Import numpy library and create numpy array using randint() method.
- Pass this array to the imwrite() method.
- The image will be saved to the path mentioned in the method.
Source Code:
import imageio import numpy as np # Creating the 144 X 144 NumPy Array with random values arr = np.random.randint(255, size=(144, 144), dtype=np.uint8) # Converting the numpy array into image imageio.imwrite('Image_from_array.png', arr) print(" The Image is saved successfully ")
Output:
The Image is saved successfully
It will create an image file with name “Image_from_array.png” in the same folder. Image file will be like this,

It might be possible that you can get an error, if imageio module is not installed. Like,
ModuleNotFoundError: No module named 'imageio'
Then use the following command to install the imageio module,
pip3 install imageio
Convert NumPy Array to Image using imwrite() from opencv module
The opencv module provide imwrite() method to convert the array into any image format. We will create a numpy array and pass the array to imwrite() method
Syntax of imwrite()
cv2.imwrite(fp, Array)
- Parameters:
- Array = Array which needs to be converted into image.
- fp = Name or path to save the image.
- Returns:
- None
The Approach to convert NumPy Array to an Image:
- Import numpy library and create numpy array using randint() method.
- Pass this array to the imwrite() method.
- The image will be saved to the path mentioned in the method.
Source Code
import cv2 import numpy as np # Creating the 144 X 144 NumPy Array with random values arr = np.random.randint(255, size=(144, 144),dtype=np.uint8) # Converting the numpy array into image cv2.imwrite('Image_from_array.png', arr) print(" The Image is saved successfully ")
Output:
The Image is saved successfully
It will create an image file with name “Image_from_array.png” in the same folder. Image file will be like this,

It might be possible that you can get an error, if opencv-python module is not installed. Like,
ModuleNotFoundError: No module named 'cv2'
Then use the following command to install the opencv-python module,
pip3 install opencv-python
Summary
Great! you made it, We have discussed All possible methods to convert a NumPy Array to an image in Python. Happy learning.