2016-03-08 7 views
5

का उपयोग कर किसी भी छवि से पारदर्शिता/अल्फा निकालें, मैं निर्दिष्ट पृष्ठभूमि रंग के साथ किसी भी छवि (पीएनजी, जेपीजी, आरजीबी, आरबीजीए) के अल्फा चैनल को कैसे बदलूं? यह उन छवियों के साथ भी काम करना चाहिए जिनके पास अल्फा चैनल नहीं है।पीआईएल

उत्तर

8

यह जाँच करके किया जा सकता है, तो छवि पारदर्शी है

def remove_transparency(im, bg_colour=(255, 255, 255)): 

    # Only process if image has transparency (http://stackoverflow.com/a/1963146) 
    if im.mode in ('RGBA', 'LA') or (im.mode == 'P' and 'transparency' in im.info): 

     # Need to convert to RGBA if LA format due to a bug in PIL (http://stackoverflow.com/a/1963146) 
     alpha = im.convert('RGBA').split()[-1] 

     # Create a new background image of our matt color. 
     # Must be RGBA because paste requires both images have the same format 
     # (http://stackoverflow.com/a/8720632 and http://stackoverflow.com/a/9459208) 
     bg = Image.new("RGBA", im.size, bg_colour + (255,)) 
     bg.paste(im, mask=alpha) 
     return bg 

    else: 
     return im