I'm working on a project where I need to open multiple image files and then add filter, resize the image and then save.
My Code is like this.
edited_images = [] # list where edited image object will be saved
def add_filter():
img_dir = "C:/Users/Images"
for image in os.listdir(img_dir):
image = Image.open(image)
image = image.filter(BLUR)
edited_images.append(image)
image.close()
def change_size():
...
Here I'm closing the Image object each time for memory management. Otherwise, it'll cross 5 GBs of RAM for 500+ images and so on.
Now I want to open those Image objects saved in edited_images to save them. How I can achieve this?
for image in edited_images:
print(image)
I get these results for above code:
<PIL.Image.Image image mode=RGB size=1024x1024 at 0x2343078A250>
<PIL.Image.Image image mode=RGB size=1024x1024 at 0x2343078A220>
<PIL.Image.Image image mode=RGB size=1024x1024 at 0x2343078AFD0>
When I run this:
for image in edited_images:
image = Image.open(image)
image.save("C:\Users\Edited_Images")
For the above code I get these results:
File "c:\Users\Images\Image Processor.py", line 512, in <module>
apply_edits(image_folder, selected_images, finalized_edit_selection)
File "c:\Users\Images\Image Processor.py", line 409, in apply_edits
image = Image.open(image)
File "C:\Program Files\Python38\lib\site-packages\PIL\Image.py", line 2913, in open
prefix = fp.read(16)
AttributeError: 'Image' object has no attribute 'read'
I need to use these Image objects saved in the edited_images list to save images.