Home > Backend Development > Python Tutorial > How to Efficiently Convert PIL Images to NumPy Arrays for Pixel Manipulation and Back?

How to Efficiently Convert PIL Images to NumPy Arrays for Pixel Manipulation and Back?

Susan Sarandon
Release: 2024-11-19 14:18:03
Original
704 people have browsed it

How to Efficiently Convert PIL Images to NumPy Arrays for Pixel Manipulation and Back?

Converting PIL Images to NumPy Arrays for Efficient Pixel Manipulation

Question: How can you convert a PIL Image into a NumPy array for faster pixel-wise transformations without encountering issues during the conversion back to a PIL Image?

Answer:

The process involves two steps:

Converting PIL Image to NumPy Array

To convert a PIL Image to a NumPy array, you can use this code as an example:

pic = Image.open("foo.jpg")
pix = numpy.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)
Copy after login

Converting NumPy Array Back to PIL Image

Using pic.putdata():

If pic.putdata() is not behaving as expected when attempting to load the modified array back into the PIL Image, check that you are providing the data in a format that putdata() accepts. It expects a sequence of tuples, so you may need to convert the array to this format, as shown below:

data = list(tuple(pixel) for pixel in pix)
pic.putdata(data)
Copy after login

Using PIL 1.1.6 :

As of PIL 1.1.6, you can use the following simplified approach for converting between images and NumPy arrays:

pix = numpy.array(pic)
Copy after login

This will result in a 3-dimensional array with rows, columns, and RGB values.

Final Steps:

After making modifications to the array, you can use either pic.putdata(pix) or Image.fromarray(pix) to create a new PIL Image.

The above is the detailed content of How to Efficiently Convert PIL Images to NumPy Arrays for Pixel Manipulation and Back?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template