Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting "cannot write mode P as JPEG" while operating on JPG image

I am trying to resize some images, most of which are JPG. But in a few images, I am getting the error:

Traceback (most recent call last):   File "image_operation_new.py", line 168, in modifyImage     tempImage.save(finalName);   File "/Users/kshitiz/.virtualenvs/django_project/lib/python2.7/site-     packages/PIL/Image.py", line 1465, in save    save_handler(self, fp, filename)   File "/Users/kshitiz/.virtualenvs/django_project/lib/python2.7/site-   packages/PIL/JpegImagePlugin.py", line 455, in _save     raise IOError("cannot write mode %s as JPEG" % im.mode) IOError: cannot write mode P as JPEG 

I am not changing the image type and I'm using the pillow library. My OS is Mac OS X. How can I resolve the issue?

like image 417
vlad halmer Avatar asked Feb 10 '14 05:02

vlad halmer


2 Answers

You need to convert the image to RGB mode.

Image.open('old.jpeg').convert('RGB').save('new.jpeg') 
like image 124
Jayanth Koushik Avatar answered Sep 16 '22 15:09

Jayanth Koushik


This answer is quite old, however, I thought I will put a better way to do the same by checking for the mode before doing the conversion:

if img.mode != 'RGB':     img = img.convert('RGB') 

This is required to save your image in JPEG format.

like image 30
Sarang Avatar answered Sep 18 '22 15:09

Sarang