2015-03-06 14 views
1

Я хотел бы конвертировать кучу изображений с подушкой (PIL для python 3) из PNG в JPG. Я изучил возможность делать это в Интернете, но, похоже, это невозможно. У меня есть этот скрипт:Конвертировать PNG в JPG с подушкой

from glob import glob 
import os 
from PIL import Image as image 
for file in glob('*.png'): 
    img=image.open(file) 
    name,ext=os.path.splitext(file) 
    img.save('E:\\Icons\\All\\JPG'+name+'.jpg','JPEG') 

Но это дает мне эту ошибку:

Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\PIL\JpegImagePlugin.py", line 569, in _save 
    rawmode = RAWMODE[im.mode] 
KeyError: 'LA' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "E:/Icons/All/script.py", line 7, in <module> 
    img.save('E:\\Icons\\All\\JPG'+name+'.jpg','JPEG') 
    File "C:\Python34\lib\site-packages\PIL\Image.py", line 1682, in save 
    save_handler(self, fp, filename) 
    File "C:\Python34\lib\site-packages\PIL\JpegImagePlugin.py", line 571, in _save 
    raise IOError("cannot write mode %s as JPEG" % im.mode) 
OSError: cannot write mode LA as JPEG 

ответ

1

С кодом, я сделал преобразование из PNG в JPEG с использованием подушки

from PIL import Image 
import cStringIO 
from glob import glob 

def png_to_jpeg(): 
    for obj in glob("*.png"): 
     in_file = open(obj,"rb") 
     img = in_file.read() 
     try: 
      Image.open(cStringIO.StringIO(img)) 
     except: 
      print("can not open image file error") 

     im = Image.open(cStringIO.StringIO(img)) 
     _image = cStringIO.StringIO() 
     im.save(_image, "JPEG") 
     store_image = _image.getvalue() 
     new_obj = str("new_") + obj.replace(obj.split('.')[-1], 'jpg') 
     out_file = open(new_obj, "wb") 
     out_file.write(store_image) 
     out_file.close() 
Смежные вопросы