2011-09-22 12 views
17

मैं इसके साथ थोड़ी देर के लिए दीवार के खिलाफ अपना सिर मार रहा हूं, इसलिए शायद वहां कोई भी मदद कर सकता है।पीआईएल में पारदर्शी पीएनजी पारदर्शी नहीं होने के कारण बाहर निकलता है

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

यह अंत में सभी काले रंग में आता है, जो परेशान है, क्योंकि मैंने इसे काला नहीं बताया था।

मैंने अन्य पदों से कई प्रस्तावित फिक्स के साथ इसका परीक्षण किया है। छवि आरजीबीए प्रारूप में खुलती है, और यह अभी भी गड़बड़ है।

इसके अलावा, इस कार्यक्रम को सभी प्रकार के फाइल प्रारूपों से निपटना है, इसलिए मैं पीआईएल का उपयोग कर रहा हूं। पुरानी है कि मैंने कोशिश की पहली प्रारूप सभी खराब है।

किसी भी मदद की सराहना की जाएगी। यहां कोड है:

from PIL import Image 
img = Image.open(basefile) 
layer = Image.open(layerfile) # this file is the transparent one 
print layer.mode # RGBA 
img.paste(layer, (xoff, yoff)) # xoff and yoff are 0 in my tests 
img.save(outfile) 
+0

http://stackoverflow.com/questions/5324647/how-to-merge-a-transparent-png-image-with-another- की संभावित डुप्लिकेट छवि-उपयोग-पायल –

उत्तर

30

मुझे लगता है कि आप क्या उपयोग करना चाहते हैं पेस्ट मास्क तर्क है। docs देखते हैं, (paste के लिए नीचे स्क्रॉल)

from PIL import Image 
img = Image.open(basefile) 
layer = Image.open(layerfile) # this file is the transparent one 
print layer.mode # RGBA 
img.paste(layer, (xoff, yoff), mask=layer) 
# the transparancy layer will be used as the mask 
img.save(outfile) 
+3

ब्रावो! मास्क क्या था पर पीआईएल दस्तावेज स्पष्ट नहीं था - सबसे पहले मैंने सोचा कि यह एक संख्या थी (क्योंकि उन्होंने कुछ कहा था कि 'मास्क 0 है, अगर मुखौटा 255 है), तो मैंने सोचा कि यह बॉक्स की तरह था तर्क, लेकिन इसके बजाय यह निर्धारित करने के लिए प्रयोग किया गया था कि छवि तर्क का कौन सा हिस्सा कॉपी किया जाएगा। अब यह और अधिक समझ में आता है, धन्यवाद! – MarkTraceur

+0

आपने मुझे बहुत मदद की। धन्यवाद – imkost

+8

ओह क्यों पृथ्वी पर यह डिफ़ॉल्ट रूप से ऐसा नहीं करेगा ... – Claudiu

संबंधित मुद्दे