2009-08-20 23 views
20

मेरे पास दो पीएनजी हैं जिन्हें मैं पाइथन 2.5 पर ReportLab 2.3 का उपयोग करके पीडीएफ में गठबंधन करने की कोशिश कर रहा हूं। जब मैं कैनवास पर पीएनजी लिखने और सहेजने के लिए canvas.drawImage (ImageReader) का उपयोग करता हूं, तो पारदर्शिता काला हो जाती है। यदि मैं एक नई छवि उत्पन्न करने के लिए पीआईएल (1.1.6) का उपयोग करता हूं, तो पीआईएल छवि पर पीएनजी पेस्ट करें(), यह सिर्फ ठीक है। मैंने गिंप में दो बार चेक किया है और दोनों छवियों में अल्फा चैनल काम कर रहे हैं और सही तरीके से सहेजे जा रहे हैं। मुझे कोई त्रुटि नहीं मिल रही है और ऐसा लगता है कि मेरा google-fu चालू नहीं हो सकता है।रिपोर्टब्लैब के साथ पीएनजी में पारदर्शिता 2.3

क्या किसी ने एक पारदर्शी पीएनजी को एक रिपोर्टलैब कैनवास पर मिश्रित किया है, पारदर्शिता ठीक तरह से काम कर रही है? धन्यवाद!

उत्तर

47

पासिंग पैरामीटर 'ऑटो' के मूल्य के साथ drawImage मेरे लिए यह ठीक करता है।

drawImage(......., mask='auto') 

More information on the drawImage-function

+0

मेरे लिए भी काम किया - धन्यवाद! –

+0

यूप, यह करता है। धन्यवाद! –

+1

FYI 'drawImage' दस्तावेज़ यहां उपलब्ध हैं: http://www.reportlab.com/apis/reportlab/dev/pdfgen.html#reportlab.pdfgen.canvas.Canvas.drawImage – dkamins

0

रिपोर्टलैब छवियों के प्रबंधन के लिए पीआईएल का उपयोग करता है। वर्तमान में, पीआईएल ट्रंक में पैच को पारदर्शी पीएनजी का समर्थन करने के लिए लागू किया गया है, लेकिन यदि आपको स्थिर पैकेज की आवश्यकता है तो आपको 1.1.6 रिलीज की प्रतीक्षा करनी होगी।

1

मैंने पाया कि mask='auto' reportlab 3.1.8 के साथ मेरे लिए काम बंद कर दिया है। दस्तावेज़ों में यह उन मानों को पारित करने के लिए कहता है जिन्हें आप मुखौटा करना चाहते हैं। तो अब मेरे लिए क्या काम करता है mask=[0, 2, 0, 2, 0, 2, ] है। असल में यह इस 'मास्क = [red_start, red_end, green_start, green_end, blue_start, blue_end,]

मास्क पैरामीटर आपको पारदर्शी छवियां बनाने देता है। इसमें 6 संख्याएं होती हैं और आरजीबी मूल्यों की सीमा को परिभाषित करता है जिसे से मुखौटा किया जाएगा या पारदर्शी माना जाएगा। उदाहरण के लिए [0,2,40,42,136,139] के साथ, यह 0 या 1 से लाल मान वाले किसी भी पिक्सल को मास्क करेगा, 40 या 41 के ब्लू और 136, 137 या 138 के ब्लू (0- 255)। यह वर्तमान में यह जानने के लिए आपका काम है कि कौन सा रंग 'पारदर्शी' या पृष्ठभूमि एक है।

अद्यतन: मास्क बाहर कुछ भी है कि rgb(0, 0, 0) या rgb(1, 1, 1) जो स्पष्ट रूप से सही समाधान नहीं हो सकता है यही कारण है कि। मेरी समस्या लोगों को एक ग्रे रंग अंतरिक्ष के साथ पीएनजी छवियों को अपलोड कर रहा था। तो मुझे छवि के रंग स्थान का पता लगाने के लिए अभी भी एक तरीका पता लगाने की जरूरत है। और केवल ग्रे स्पेस छवियों पर उस मुखौटा को लागू करें।

+0

मैं एक काले और सफेद छवि का उपयोग कर रहा हूँ। एक फिक्स को समझने के लिए प्रतीत नहीं होता है इसलिए मैंने छवि को एक सफेद पृष्ठभूमि के लिए फ़ोटोशॉप किया। रास्ता, रास्ता, रास्ता तेजी से। – varagrawal

+0

@ वावराग्राल यदि आप फ़ोटोशॉप में अपनी मूल छवि खोलते हैं तो आपको यह जांचना चाहिए कि यह किस रंग की जगह का उपयोग कर रहा है। यह शायद ग्रे पैमाने पर है। यदि आप कलर स्पेस को आरजीबी में बदलना चाहते हैं तो छवि वही दिखाई देगी लेकिन यह फ़ाइल आकार का एक बड़ा हिस्सा होगा, लेकिन यह काम करेगा और आप पारदर्शिता रख सकते हैं। – teewuane

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