png - सफेद पृष्ठभूमि के साथ पीएनजी छवियों में पारदर्शिता बदलें




imagemagick alpha-transparency (8)

मुझे पारदर्शिता के साथ कुछ पीएनजी छवियां मिली हैं, और मुझे एक सफेद पृष्ठभूमि पर चित्रित छवि परत के साथ संस्करण बनाने की आवश्यकता है। मैंने छवि मैजिक "कन्वर्ट" ऑपरेशंस के साथ विभिन्न चीजों की कोशिश की है, लेकिन या तो कुछ भी नहीं होता है या मुझे कोई त्रुटि मिलती है। मैं मध्यवर्ती जेपीजी फॉर्म में नहीं जाना चाहता क्योंकि मैं कलाकृतियों को नहीं चाहता हूं। बेशक यह गिंप या फ़ोटोशॉप या जो भी हो, में करना आसान है, लेकिन मैं वास्तव में कमांड लाइन से इसे स्क्रिप्ट करता हूं क्योंकि इनमें से कई चीजें हैं।

एक गैर-काम करने वाली छवि मैजिक कमांड का एक उदाहरण है:

convert img1.png -background white -flatten img1-white.png

इसका परिणाम एक त्रुटि में है।

धन्यवाद!


-फ्लैटन का उपयोग करके मुझे पूरी तरह से पागल बना दिया गया है क्योंकि -फ्लोगन फसल और आकार बदलने के साथ संयोजन में काम नहीं करता है। आधिकारिक और मेरे लिए केवल सही तरीका अल्फा चैनल को "निकालना" है।

-ल्फा हटाने-एल्फा बंद (जेपीजी के साथ जरूरी नहीं)

दस्तावेज देखें: http://www.imagemagick.org/Usage/masking/#remove


Welp ऐसा लगता है कि "छवि मैजिक" पर "ग्राफिक्स मैजिक" स्थापित करने के मेरे निर्णय में कुछ मोटा किनार हैं - जब मैं वास्तविक क्रॉफ्टी पुरानी "छवि मैजिक" को पुनर्स्थापित करता हूं, तो उपरोक्त आदेश पूरी तरह से अच्छी तरह से काम करता है।

संपादित करें , लंबे समय बाद - इन दिनों में से एक मैं यह देखने के लिए जांच करूंगा कि "ग्राफिक्स मैजिक" ने इस समस्या को ठीक किया है या नहीं।


छवि को फ़्लैटन करना और पृष्ठभूमि छवि को लागू करना ImageMagick में सीधे आगे है

हालांकि, आदेशों का क्रम बहुत महत्वपूर्ण है

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

$ convert sourceimage.png -background BackgroundColor -flatten destinationimage.png

पारदर्शी की बजाय सफेद वाली निर्देशिका में सभी फ़ोल्डर्स में एक ही छवि को प्रतिस्थापित करने का तरीका यहां बताया गया है:

mogrify -background white -flatten */*.png


मेरे लिए काम करने वाला एकमात्र ऐसा उत्तर था जो सभी उत्तरों का मिश्रण था:

convert in.png -background white -alpha remove -flatten -alpha off out.png

यह एक छवि को केवल दूसरे के शीर्ष पर पारदर्शिता के साथ रखता है

composite -gravity center ImgWithTransp.png BackgroundSameSizeOfImg.png ResultImg.png

मूल रूप से इस पोस्ट पर टिप मिली


यह वास्तव में आपके प्रश्न का उत्तर नहीं है, लेकिन अल्फा चैनल को हटाने का तरीका जानने के दौरान मुझे आपका प्रश्न मिला, इसलिए मैंने यह जवाब यहां जोड़ने का निर्णय लिया:

अगर आप छविमैजिक का उपयोग करके अल्फा चैनल को हटाना चाहते हैं, तो आप इस कमांड का उपयोग कर सकते हैं:

mogrify -alpha off ./*.png

ImageMagick उपयोग मार्गदर्शिका का अल्फा निकालें अनुभाग -alpha remove विकल्प का उपयोग करने का सुझाव देता है, उदाहरण के लिए:

convert in.png  -background white  -alpha remove  out.png

... अपने चयन के -background रंग का उपयोग कर।

गाइड कहता है:

यह ऑपरेशन सरल और तेज़ है, और बिना किसी अतिरिक्त मेमोरी उपयोग की आवश्यकता के नौकरी, या वैकल्पिक पारदर्शिता हटाने तकनीकों से जुड़े अन्य साइड इफेक्ट्स के बिना नौकरी करता है। इस प्रकार छवि पारदर्शिता को हटाने का पसंदीदा तरीका है।

यह अतिरिक्त रूप से नोट जोड़ता है:

ध्यान दें कि जबकि पारदर्शिता 'हटा दी जाती है' अल्फा चैनल चालू रहेगा, लेकिन अब पूरी तरह से अपारदर्शी होगा। अगर आपको अब अल्फा चैनल की आवश्यकता नहीं है तो आप इसे अक्षम करने के लिए अल्फा ऑफ का उपयोग कर सकते हैं।

इस प्रकार, अगर आपको अल्फा चैनल की आवश्यकता नहीं है तो आप -alpha off विकल्प जोड़कर अपना आउटपुट छवि आकार छोटा कर सकते हैं, उदाहरण के लिए:

convert in.png  -background white  -alpha remove  -alpha off  out.png

http://www.imagemagick.org/Usage/masking/#remove अनुभाग http://www.imagemagick.org/Usage/masking/#remove को हटाने में वर्णित पारदर्शिता को हटाने के लिए अन्य, अक्सर उपयोग की जाने वाली तकनीकों पर अधिक जानकारी है।

पारदर्शिता को हटाने के लिए तकनीक के रूप में -flatten के उपयोग के लिए उस खंड में शामिल एक महत्वपूर्ण चेतावनी का उल्लेख है:

हालांकि यह "mogrify" या एकाधिक छवियों के अनुक्रम के साथ काम नहीं करेगा, मूल रूप से क्योंकि "-फ्लैटन" ऑपरेटर वास्तव में एक छवि में एकाधिक छवियों को मर्ज करने के लिए डिज़ाइन किया गया है।

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