2017-04-06 9 views
10

मैं तकिया का उपयोग करके पीएनजी को जेपीईजी में परिवर्तित करने की कोशिश कर रहा हूं। मैंने सफलता के बिना कई स्क्रिप की कोशिश की है। ये 2 इस तरह की छोटी पीएनजी छवियों पर काम करना प्रतीत होता था।पायथन में pillow का उपयोग करके पीएनजी को जेपीजी में कनवर्ट करें

enter image description here

पहले कोड:

from PIL import Image 
import os, sys 

im = Image.open("Ba_b_do8mag_c6_big.png") 
bg = Image.new("RGB", im.size, (255,255,255)) 
bg.paste(im,im) 
bg.save("colors.jpg") 

दूसरा कोड:

image = Image.open('Ba_b_do8mag_c6_big.png') 
bg = Image.new('RGBA',image.size,(255,255,255)) 
bg.paste(image,(0,0),image) 
bg.save("test.jpg", quality=95) 

लेकिन अगर मैं इस एक

की तरह कोई बड़ा चित्र बदलने की कोशिश

मैं क्या मैं गलत कर रहा हूँ

Traceback (most recent call last):

  File "png_converter.py", line 14, in 

    bg.paste(image,(0,0),image)   File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1328, in paste

    self.im.paste(im, box, mask.im) ValueError: bad transparency mask

हो रही है?

+0

आप की कोशिश की [इस] (है http enter image description here

यहाँ कैसे मैं इसे खोल का उपयोग कर परिवर्तित है : //stackoverflow.com/questions/7911451/pil-convert-png-or-gif-with-transparency-to-jpg-without)? –

+0

हाँ, मैंने किया, यह पहला उदाहरण है –

उत्तर

14

आप परिवर्तित() विधि का उपयोग करना चाहिए:

from PIL import Image 

im = Image.open("Ba_b_do8mag_c6_big.png") 
rgb_im = im.convert('RGB') 
rgb_im.save('colors.jpg') 

अधिक जानकारी: http://pillow.readthedocs.io/en/latest/reference/Image.html#PIL.Image.Image.convert

+0

एचएम .. ऐसा लगता है, मुझे कुछ अन्य परीक्षण करने दो –

3

आप खुली छवि को आरजीबी के रूप में परिवर्तित कर सकते हैं और फिर आप इसे किसी भी प्रारूप में सहेज सकते हैं। कोड होगा:

from PIL import Image 
im = Image.open("image_path") 
im.convert('RGB').save("image_name.jpg","JPEG") #this converts png image as jpeg 

जबकि इस तरह खोलने आप छवि का कस्टम आकार चाहते हैं, बस छवि का आकार:

im = Image.open("image_path").resize(x,y) 

और फिर आरजीबी में बदल जाएंगे और इसे सहेजें।

आपके कोड के साथ समस्या यह है कि आप एक आरजीबी ब्लॉक में पीएनजी चिपका रहे हैं और इसे हार्ड कोडिंग द्वारा जेपीईजी के रूप में सहेज रहे हैं। आप वास्तव में एक पीएनजी jpeg में परिवर्तित नहीं कर रहे हैं।

+0

सभी उत्तरों अच्छे हैं, धन्यवाद, लेकिन कोई विचार है कि आप आकार को कैसे संकुचित कर सकते हैं? –

+0

छवि को सहेजते समय अनुकूलित करें = सही प्रयास करें। – Mani

3

कि छवि के साथ मुद्दा नहीं है कि यह बड़ी है, यह है कि यह आरजीबी नहीं है, विशेष रूप से वह यह है कि यह एक सूचकांक छवि है।

>>> from PIL import Image 
>>> im = Image.open("Ba_b_do8mag_c6_big.png") 
>>> im.mode 
'P' 
>>> im = im.convert('RGB') 
>>> im.mode 
'RGB' 
>>> im.save('im_as_jpg.jpg', quality=95) 

तो अपने कोड में छवि के मोड के लिए एक जांच जोड़ें::

if not im.mode == 'RGB': 
    im = im.convert('RGB') 
संबंधित मुद्दे