यूनिक्स शेल में ग्रेस्केल छवि को अल्फा चैनल छवि में परिवर्तित करें


14

मेरी एक ग्रे-स्केल छवि है। मैं इसे एक पारदर्शी पीएनजी में बदलना चाहता हूं, जैसे कि ब्लैक पिक्सल्स (मूल छवि में) पूरी तरह से अपारदर्शी हो जाते हैं, सफेद पिक्सेल पूरी तरह से पारदर्शी हो जाते हैं, 50% ग्रे पिक्सेल 50% पारदर्शी हो जाता है, और इसी तरह सभी रंगों के लिए के बीच में।

इसे कैसे प्राप्त किया जा सकता है?

(हां, मुझे पता है कि यह लगभग एक ही सवाल है कि अल्फा चैनल में ग्रेस्केल शेड्स परिवर्तित हैं , लेकिन मैं यह जानना चाहता हूं कि केवल कमांड लाइन टूल्स - जैसे ImageMagick या NetPBM का उपयोग करके यह कैसे किया जाए।)

यहाँ उपर्युक्त प्रश्न का एक नमूना परिणाम है। यह नमूना एक परिणाम है जिसे मैं केवल कमांड-लाइन टूल का उपयोग करके प्राप्त करना चाहूंगा।

नमूना

यदि आप पारदर्शिता का समर्थन करने वाले किसी दर्शक में इस PNG को खोलते हैं, तो आप देखेंगे कि मेरा क्या मतलब है।

जवाबों:


18

Ooookay। बहुत सारे गोग्लिंग के बाद, और ImageMagick मैनुअल के अधिक पढ़ने के लिए मैं वास्तव में परवाह करता हूं, यहां जवाब है। यह देखते हुए कि आपके पास एक ग्रेस्केल छवि है source.png, जिसे यहां मेरे आदेश हैं।

बनाने के लिए मेकअप काला पिक्सेल को पारदर्शी और के रूप में वे कर रहे हैं सफेद पिक्सल रहता है, यह कमांड चलाएँ:

 convert source.png -alpha copy -fx '#fff' result.png

इसके बजाय सफेद पिक्सल को पारदर्शी रखते हुए, जैसा कि काला है, का उपयोग करें:

 convert source.png -alpha copy -channel alpha -negate +channel -fx '#000' result.png

आइए बताते हैं कि अंतिम आदेश थोड़ा और अच्छी तरह से:

  • convert - ImageMagic कमांड (कई में से एक)
  • source.png - ग्रेस्केल स्रोत छवि।
  • -alpha copy - अल्फा चैनल में पिछली फ़ाइल की सामग्री की प्रतिलिपि बनाएँ।
  • -channel alpha - निर्दिष्ट करें कि निम्नलिखित ऑपरेटरों को केवल अल्फा चैनल को प्रभावित करना चाहिए।
  • -negate - अल्फा चैनल (विल, पिछले की वजह से) -chanel alpha छवि के किसी अन्य हिस्से को प्रभावित नहीं करता है) ।
  • +channel- निर्दिष्ट करें कि निम्नलिखित ऑपरेटरों को केवल रंग चैनलों को प्रभावित करना चाहिए, और अब अल्फा चैनल को संशोधित नहीं करना चाहिए। (यह डिफ़ॉल्ट है, और इसलिए हमें इसे पहले, सरल उदाहरण में प्रदान करने की आवश्यकता नहीं है।)
  • -fx '#000'- काले पिक्सेल के साथ रंग चैनल सामग्री बदलें। ( +channelअल्फा चैनल के कारण प्रभावित नहीं होगा)।

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

मुझे ImageMagick विकल्पों की सूची काफी उपयोगी लगी


अपने लक्ष्य को प्राप्त करने के लिए बहुत अच्छी व्याख्या, जब मैं दूसरी कमांड का उपयोग कर रहा हूं जो कि मेरी छवि को वास्तविक स्केल इमेज की तुलना में अधिक गहरा बनाती है। वास्तव में, मेरा उद्देश्य उसी रंग टोन को प्राप्त करना है जो उस पारदर्शिता के अलावा अन्य ग्रेस्केल में है। किसी भी विचार को प्राप्त करने के लिए?
हार्दिक पटेल

यह बहुत उपयोगी है, धन्यवाद! :) मुझे खुशी है कि मुझे इसे खुद के लिए
सैम वाटकिंस

मैं तुमसे प्यार करता हूँ!!!!!!
मेसकार्रा

इस प्रकार की टिप्पणियों को शायद इस चैनल के माध्यम से मुझे भेजना बेहतर होगा: okcupid.com/profile/zrajm :)
zrajm

1
निश्चित रूप से क्यों नहीं, लेकिन वर्तमान संस्करण के साथ (ImageMagick 7.0.7-21) मुझे केवल ठोस सफेद / काली छवि मिलती है, परिणामस्वरूप, बिना किसी अल्फा चैनल के। मैंने केवल इनपुट / आउटपुट फ़ाइल पथों को बदलते हुए कमांड लाइन वर्बेटिम की प्रतिलिपि बनाई। हो सकता है कि उन्होंने कुछ पिछड़े-असंगत परिवर्तन किए हों।
डिस्प्ले का नाम

0

ImageMagick 7.0 के साथ, उपरोक्त उत्तर अब और नहीं। लेकिन आप उपयोग कर सकते हैं:

source.png -channel rgb -fx '#fff' result.png में कनवर्ट करें

आका, आरजीबी चैनलों को रिक्त से भरें, और पहले की तरह अल्फा दें।


मुझे संदेह है कि आप '-लफ़ा कॉपी' याद कर रहे हैं :)
क्रिस

0

इमेजमैजिक 7 के साथ, मुझे लगता है कि इसे -channel RGBपहले निर्दिष्ट करना आवश्यक है -fx, अन्यथा आपको एक ठोस काली छवि मिलती है, जैसे:

convert input.png -alpha copy -channel RGB -fx '#000' out.png

और नकारात्मक उपयोगी है यदि आप चाहते हैं कि काला अपारदर्शी हो और सफेद पारदर्शी हो:

convert input.png -negate -alpha copy -channel RGB -fx '#000' out.png
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.