2012-11-13 31 views
6

पर छवि मैगिक के साथ एक अर्ध-पारदर्शी पीएनजी बनाना, मेरे पास पीएनजी फाइलें हैं जो मैं पूरी छवि को अर्ध-पारदर्शी बनाने के लिए परिवर्तित करना चाहता हूं। छवि को Google धरती/मानचित्र में उपयोग के लिए आइकन ओवरले के रूप में केएमएल फ़ाइल में संदर्भित किया जाएगा।सेंटीस लिनक्स

छवि मैगिक कन्वर्ट कमांड का उपयोग करके मुझे निम्नलिखित उदाहरण सुझाए गए हैं, हालांकि न तो काम करने लगता है। पहला उदाहरण एक त्रुटि में परिणाम देता है, दूसरा उदाहरण छवि में कोई अवलोकन करने योग्य परिवर्तन करने में विफल रहता है।

$ /usr/local/bin/convert 121112142121.png -channel Alpha -evaluate Set 50% 2121112142121.png 
convert: no decode delegate for this image format '121112142121.png' @ error/constitute.c/ReadImage/550. 
convert: option requires an argument '-evaluate' @ error/convert.c/ConvertImageCommand/1400. 

दूसरा सुझाव विधि थी इस:

convert filename.png -fill '#00000080' -draw 'matte 100,100 reset' output.png 

मैं विशिष्ट रंग या अल्फ़ा मास्क से पूरी तरह से पारदर्शी छवियों बनाने के लिए वेब पर कई उदाहरण ढूंढ़ सकते हैं, मैं किसी भी खोजने के लिए नहीं कर पा रहे वह अर्द्ध पारदर्शी छवियों के निर्माण के लिए काम करता है। मैं कन्वर्ट कमांड, या ImageMagick पर्ल के साथ ऐसा करने का एक तरीका खोजना चाहता हूं।

ImageMagick संस्करण 6.8.0-4 है।

उत्तर

12

संकल्प पाया गया है:

convert input.png -alpha set -channel A -evaluate set 50% output.png 

उपरोक्त आदेश पूरी छवि (सभी रंग) अर्द्ध पारदर्शी बनाता है।

मेरी एक और समस्या यह थी कि ImageMagick का नवीनतम संस्करण सभी नवीनतम छवि पुस्तकालयों (विशेष रूप से libpng) के बिना स्रोत से संकलित किया गया था। स्रोत से संकलित होने पर libpng पाया जाता है यह सुनिश्चित करने के लिए कॉन्फ़िगरेशन के आउटपुट पर बारीकी से ध्यान दें। यह भी प्रतीत होता है कि छविमैजिक के संस्करण 6.6 और/या libpng के पुराने संस्करणों से पहले पारदर्शी पीएनजी पीढ़ी का समर्थन नहीं कर सकते हैं।

+8

यदि आप मूल छवि से इसे स्वतंत्र बनाना चाहते हैं तो आप '-वाइवलेट डिवाइड 2' का भी उपयोग कर सकते हैं (केवल सभी पिक्सल के लिए पारदर्शिता को दोगुना करें)। – caw

+6

इस दृष्टिकोण के साथ समस्या यह है कि यदि आपके पास छवि में पहले से ही पारदर्शी पिक्सल हैं, तो उनकी पारदर्शिता बदलती है और साथ ही उन्हें अर्ध-पारदर्शी काला बना देती है :(कोई विचार? –

0

टोनी Bogdanov की टिप्पणी पर अनुवर्ती करने के लिए।

1.) एक मुखौटा

convert -alpha extract input.png mask.png

2. में पारदर्शी पिक्सेल परिवर्तित) के ऊपर जवाब में सूचीबद्ध आदेश करते हैं: आपको निम्न रणनीति का उपयोग कर सकते आप पहले से ही पूरी तरह से पारदर्शी पिक्सल है, तो :

convert input.png -alpha on -channel a -evaluate set 65% output.png

3.) मूल छवि के रूप में एक खाली कैनवास एक ही आकार बनाने

उदाहरण: convert -size 700x800 xc:none blankcanvas.png

4.) संयुक्त अर्द्धपारदर्शी छवि और खाली कैनवास एक साथ पारदर्शी पिक्सेल मुखौटा

composite output.png blankcanvas.png mask.png -compose Src final_output.png

4
convert input.png -alpha set -channel A -evaluate Divide 2 output.png 

धन्यवाद का उपयोग कर अपनी टिप्पणी में यह उनका कहना है के लिए @caw। यह उस मामले में सहायता करता है जहां छवि में पहले से ही कुछ पारदर्शी पिक्सल हैं। -evaluate set 50% पहले से पारदर्शी पिक्सल को खंडित करता है जिसमें अल्फा 0 था, जो उनके अल्फा को 50% पर सेट करता था, जो प्रायः वांछनीय नहीं होता है।

-evaluate Divide 2 अल्फा को संरक्षित करता है, क्योंकि पूरी तरह से पारदर्शी पिक्सल अल्फा 0 हैं, और 0 से विभाजित 0 अभी भी 0 है।