आरजीबी + अल्फा को अप्रतिष्ठित करने के लिए पारदर्शिता


16

मैं एक पारदर्शी परत में है Photoshop CS5 (इसलिए आंतरिक रूप से, यह शायद सबसे असंबद्ध आरजीबी घटक प्लस पिक्सेल प्रति एक अल्फा घटक के रूप में) संग्रहीत है।

अब मैं इसे एक अपारदर्शी परत (बस अप्रकाशित RGB) + एक अल्फा मास्क में बदलना चाहता हूं। परिणाम मूल के समान दिखना चाहिए।

मैं सिर्फ काले रंग के साथ पारदर्शी परत को कम नहीं कर सकता, एक मुखौटा के रूप में इसमें से चयन करें और परतों को मर्ज करें, क्योंकि इससे अल्फा आरजीबी मूल्यों में प्रीमियर हो जाएगा।

मुझे उम्मीद है कि आप समस्या को समझेंगे और मुझे इसका समाधान दे सकते हैं।

एक वैकल्पिक स्पष्टीकरण के रूप में: मैं इस की प्रक्रिया चाहते हैं:

  1. किसी भी छवि में एक नई परत और पेस्ट बनाएं
  2. एक सफेद-से-काले ढाल के साथ एक मुखौटा बनाएं
  3. लेयर मास्क लगाएं

स्पष्टीकरण चित्र:

राज्य A: यहाँ छवि विवरण दर्ज करें

स्टेट बी: यहाँ छवि विवरण दर्ज करें


महत्वपूर्ण: परत सिर्फ इस उदाहरण के लिए पूरी तरह से निरंतर लाल है - लेकिन आप निरंतर लाल के बजाय किसी भी मनमानी छवि के बारे में सोच सकते हैं। इसलिए - राज्य ए से राज्य बी तक जाने के लिए, बस एक परत मुखौटा लागू करना होगा।

मैं जानना चाहता हूं कि स्टेट बी से स्टेट ए तक कैसे जाया जाए।


मुझे आश्चर्य है कि अगर कुछ प्रकार के मास्किंग प्लग-इन यहां मदद कर सकते हैं। अपारदर्शिता की जानकारी मौजूद है, यह सिर्फ यह है कि इसे कैसे प्राप्त किया जाए। पिक्सेल-स्तरीय जानकारी प्राप्त करना स्क्रिप्टिंग API में मौजूद नहीं है (कम से कम Applescript में, लेकिन सभी समर्थित भाषाएं जो मैंने देखी हैं, उससे संरेखित होती हैं)।
फिलिप रेगन

मुझे विश्वास है कि यह वही होगा जो आप चाहते हैं
gman

जवाबों:


6

मैं आपके दर्द को पूरी तरह से समझता हूं। यहाँ मेरा समाधान है :)
मास्क एक्शन के रूप में अल्फा निकालें
यहां यह है कि यह क्या करता है:

यहाँ छवि विवरण दर्ज करें संपादित करें:
यहाँ छवि विवरण दर्ज करें
मुझे आशा है कि यह मदद करता है :)


वाह, शांत .. यकीन है कि यह एक bearable प्रक्रिया बनाने के लिए क्रियाओं के उपयोग की आवश्यकता है।
अर्स मगिका

5

गलत! सब गलत!

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


मैं इसे इस तरह करने में कामयाब रहा:

  1. छवि से सच्चे RGBA चैनल निकालें
  2. नई छवि बनाने के लिए उनका उपयोग करें

और यहाँ मैंने यह कैसे किया:

परीक्षण छवि

यह परीक्षण छवि है जिसका मैंने उपयोग किया है। PS में चैनल दृश्य इस तरह दिखता है:

चैनलों

अलग-अलग चैनलों का चयन करके मैंने उन्हें अलग-अलग परतों में कॉपी किया, फिर उन्हें एक काले और सफेद नक्शे को फिर से दिखाने के लिए एक सफेद पृष्ठभूमि के साथ चपटा किया:

BW-नक्शा

मैंने लेयर-थम्बनेल पर कमांड-क्लिक करके और चयन के साथ एक नई लेयर भरकर मूल इमेज की पारदर्शिता को एक लेयर में निकाला।

फिर मैंने समान आयामों के साथ और पारदर्शिता के बिना एक नई छवि बनाई। मैंने तब आरजीबी परतों को चिपकाया था जिन्हें मैंने नई छवि में संबंधित चैनलों में बनाया था:

नई छवि के चैनल

अंतिम चरण में, मैंने डबल-क्लिक करके परत को 'अनफ्लैट' किया और मूल छवि से अल्फा-लेयर का उपयोग करके एक लेयर मास्क बनाया, जिसके परिणामस्वरूप:

परत मुखौटा


जैसा कि ऊपर कहा गया है, यह एक संयुक्त राष्ट्र-पूर्वव्यापी छवि नहीं बनाता है, क्योंकि मेरे उदाहरण को इस तरह से अप्रकाशित होना होगा:

सही संस्करण

क्या कोई मुझसे ज्यादा स्मार्ट है और इसे बना सकता है? मुझे लगता है कि उन्नत पिक्सेल-आधारित स्क्रिप्टिंग के बिना, यह फ़ोटोशॉप के भीतर संभव नहीं है।


5

ठीक है - मैंने एक साधारण पिक्सेलबेंडर फ़िल्टर बनाया है जिसे एक परत के लिए पारदर्शिता को हटाने के लिए फ़ोटोशॉप PixelBender प्लगइन (http://labs.adobe.com/downloads/pixelbenderplugin.html) के साथ उपयोग किया जा सकता है। यहाँ यह है: http://neo.cycovery.com/removeTransparency.pbk


2

दिए गए उत्तरों और आपकी टिप्पणियों के आधार पर, संक्षिप्त उत्तर है: आप वह नहीं कर सकते जो आप चाहते हैं। एक बार जब आप मुखौटा लागू करते हैं, तो परत को प्रदान किया जाता है और अनदेखी छवि डेटा को फेंक दिया जाता है।

संपादित करें:

मैंने कुछ सैंपल पीएनजी फाइलें बनाईं और फिर उन्हें (स्रोत कोड नीचे) हेरफेर करने के लिए php का इस्तेमाल किया।

यदि मैं यादृच्छिक पारदर्शिता के साथ एक पीएनजी बनाता हूं और जब एक मुखौटा होता है, तो बचत करता है, तो 100% स्पष्ट क्षेत्र (जैसे कि बॉक्स टूल से) सफेद के रूप में दिखाते हैं कि अल्फा समर्थन मोहक है या नहीं। जिन रोगियों में कुछ मात्रा 100% स्पष्ट होती है वे अल्फा डिसेबल के साथ दिखाई नहीं देते हैं।

यदि मैं लेयर मास्क (स्थाई रूप से) लगाता हूं और फिर png बनाता हूं, तो php ऑरिजनल डिसेबल होने पर ओरिजनल इमेज को सर्व करता है।

तो इसके लिए एक संभावित काम के आस-पास एक सॉफ्टवेयर पैकेज ढूंढना है जो अल्फा पीएनजी का समर्थन नहीं करता है और इसे वहां से फिर से शुरू करता है। मूल मुखौटा ठीक करने के लिए, मैंने अभी तक उस पर ध्यान नहीं दिया है।

दोनों कोड नमूने अवधारणा और SLOW के सबूत हैं।

<?php

$im = imagecreatefrompng('./images/alphatest_nolayer.png');
$enable_alpha = 0;  //set to 0 to disable aplha

if ($enable_alpha) {
    imagealphablending($im, false);
    imagesavealpha($im, true);
}

header('Content-Type: image/png');
imagepng($im);

imagedestroy($im);

?>

अल्फ़ा निकालने के लिए (ध्यान दें: php में 256 स्तर अल्फा की GD सीमा है, बजाय 256), इसलिए कुछ सटीकता खो जाती है। अल्फा 256 के स्तर उपकरण का उपयोग कर बढ़ाया जा सकता है)

<?php

$im = imagecreatefrompng('./images/alphatest_nolayer.png');
$w = imagesx($im);
$h = imagesy($im);

$om = imagecreatetruecolor($w,$h);

for ($x = 0; $x < $w; $x++) {
    for ($y = 0; $y < $h; $y++) {
        $rgb = imagecolorat($im, $x, $y);
        $colors = imagecolorsforindex($im,  $rgb);

        $orgb = imagecolorallocate($om,$colors['alpha'],$colors['alpha'],$colors['alpha']);
        imagesetpixel($om,$x,$y,$orgb);
    }
}

header('Content-Type: image/png');
imagepng($om);

imagedestroy($om);
imagedestroy($im);

?>

लेकिन डेटा अभी भी वहाँ है। यह RGBA पिक्सेल डेटा का RGB भाग है। इसे निकालने का एक तरीका होना चाहिए
Mat

1
क्यों आप एक वास्तविक दुनिया उदाहरण फ़ाइल प्रदान नहीं करते हैं? अपने प्रश्न में, आप स्पष्ट रूप से पारदर्शी क्षेत्र और न मुखौटा के साथ एक भी परत दिखाते हैं, न ही एक अल्फा चैनल का संकेत।
क्षितिज

.png में 100% पारदर्शी काले रंग के लिए एक पूर्वनिर्धारित पैलेट रंग होता है, जो कि जब भी कुछ डिस्क को बचाने के लिए 100% पारदर्शिता के साथ प्रयोग किया जाता है, तो फोटोशॉप द्वारा इसका उपयोग किया जाएगा।
अर्स मागिका

सुनिश्चित नहीं है कि यह वास्तव में सवाल का जवाब देता है - पीएनजी हैंडलिंग के लिए विशिष्ट प्रतीत होता है।
e100

2

मुझे पता चला कि इसे GIMP में कैसे करना है यह फोटोशॉप नहीं हो सकता है लेकिन कम से कम यह वही करेगा जो आप पूछते हैं। (जैसा कि मैं इसे वैसे भी व्याख्या करता हूं;))

  • छवि को GIMP में खोलें।
  • परतों बॉक्स में परत पर अपने दाहिने माउसबटन के साथ क्लिक करें
  • का चयन करें " लेयर मास्क जोड़ने " संदर्भ मेनू से
  • निम्नलिखित मेनू में " ट्रांसफर लेयर्स अल्फा चैनल " का चयन करें और " ऐड " पर क्लिक करें

इस बिंदु पर आपको एक अल्फा चैनल मास्क के साथ एक छवि के साथ छोड़ दिया जाता है।

आप एक कदम आगे जा सकते हैं:

  • लेयर मास्क पर राइट क्लिक करें और " डिलीट लेयर मास्क " चुनें
  • अब आप अल्फा मास्क के बिना छवि के साथ रह गए हैं।

वहाँ भी एक यूट्यूब क्लिप पर यह कैसे करना है।


रॉबर्टो: हां, आपको जवाब मिल गया। ठीक यही हम चाहते हैं, और यह मुफ़्त है !! मैं आपके द्वारा पोस्ट किए गए वीडियो का उपयोग किसी अन्य व्यक्ति के लिए एक ही प्रश्न पूछने के लिए करूंगा (अब तक केवल असीम रूप से PS में परत को

1

यह मन-ही-मन जटिल लगता है। यदि मैं मूल प्रश्न और इसके विभिन्न स्पष्टीकरणों को सही ढंग से समझता हूं, तो समस्या यह है कि किसी भी मनमानी छवि को पारदर्शिता से लेना और इसे पूरी तरह से अपारदर्शी बनाना है, फिर मूल स्वरूप को फिर से बनाने के लिए मूल अल्फा मानों को मुखौटा के रूप में लागू करें।

यदि यह सवाल है, तो एक बहुत ही सरल जवाब है, अगर थोड़ा थकाऊ।

  1. लेयर को 10 बार कॉपी करें। समग्र छवि में पारदर्शिता "भरना" होगी।

  2. सभी प्रतियों को मर्ज करें (लेकिन मूल परत नहीं , जिसे आपको अंतिम चरणों की आवश्यकता होगी)।

  3. मर्ज की गई परत के साथ चरण 1 और 2 को दोहराएं, फिर इसे करें। इस बिंदु पर, सभी पिक्सेल जो 100% से कम पारदर्शी थे, अब 100% अपारदर्शी हैं (यदि कुछ तार हैं, तो प्रक्रिया को तब तक दोहराएं जब तक कि कोई भी न हो)। उतनी ही छवि की जानकारी है जितना कि पुनर्प्राप्त करना संभव है।

  4. इसकी पारदर्शिता को लोड करने के लिए मूल परत थंबनेल पर Ctl / Cmd- क्लिक करें ।

  5. चयनित नई, अपारदर्शी परत के साथ, परत पैनल में परत मुखौटा आइकन पर क्लिक करें।


0

ठीक है, यह वास्तव में बहुत आसान है (आपको मार्चिंग चींटियों को अनदेखा करना होगा)

एक नई परत बनाएं और इसे पूरी तरह से जिस भी रंग का उपयोग कर रहे हैं (यदि नमूना इसे पहली छवि के मृत केंद्र से लेते हैं) से भरें

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

फिर अपनी पहली छवि और CTRL + लेयर थंबनेल पर क्लिक करें, आपको इसका कुछ संस्करण देखना चाहिए: यहाँ छवि विवरण दर्ज करें

जैसा कि मैंने पहले कहा था: मार्चिंग चींटियों को अनदेखा करें, पंख स्वतः CS5 में प्रभावी हो जाते हैं।

फिर सुनिश्चित करें कि आपके पास भरी हुई परत है और मास्क बटन पर क्लिक करें:

यहाँ छवि विवरण दर्ज करें

तो बस नीचे की परत को छिपाएं और आपको सटीक प्रभाव के साथ किया जाना चाहिए :)

यहाँ छवि विवरण दर्ज करें

और यह है कि कैसे CS5 में एक लागू मुखौटा रिवर्स करने के लिए इंजीनियर। CS5 परत चयन समारोह बहुत उन्नत है, इसलिए ज्यादातर समय मार्चिंग चींटियों को अनदेखा करते हैं क्योंकि वे सही ढंग से नहीं दिखाते हैं जो चयन के साथ चलेंगे :)

उम्मीद करते है कि यह आपके लिए काम करें।


आपके उत्तर के लिए धन्यवाद, लेकिन यह वह नहीं है जिसकी मुझे तलाश है - जैसा कि समझाया गया कि लगातार लाल इस उदाहरण के लिए है! यह कोई भी छवि हो सकती है (केवल एक स्थिर रंग नहीं) - और शाप की मुझे मूल अप्रतिष्ठित छवि उपलब्ध नहीं है
Mat

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

बेशक मैं उन चयन तकनीकों के बारे में जानता हूँ! प्रश्न में समस्या यह है कि आरजीबी को पारदर्शी परत के केवल भाग तक कैसे पहुँचा जाए
Mat

परतों के ऊपर तीन टैब हैं, चैनल पर क्लिक करें। वहां आपके पास रेड, ग्रीन, ब्लू और लेयर मास्क है। शायद यह वही है जो आप के बाद कर रहे हैं
काइल

लेकिन neo.cycovery.com/alpha_prob2.jpg में एक परत अल्फा चैनल नहीं दिखाती - इसके बजाय यह पहले से लागू पारदर्शिता के साथ आरजी और बी चैनलों को प्रदर्शित करता है
Mat

0

आप जो करना चाहते हैं वह आसानी से एक प्लगइन द्वारा किया जाता है, जैसे कि फोटोफ्रीबीज "ट्रांसपैरेंसी निकालें" प्लगइन। सबसे पहले आप पारदर्शी पिक्सल का चयन करने के लिए परत पर क्लिक करें, फिर इस पारदर्शिता जानकारी को एक नए चैनल में सहेज कर रखें। फिर आप "ट्रांसपैरेंसी निकालें" फ़िल्टर लागू करते हैं और आप अपनी लेयर टर्न अपारदर्शी में 'छिपे हुए' पिक्सल को देखते हैं (यह देखने के लिए कि फ़ोटोशॉप आपके 100% पारदर्शी पिक्सल बीटीडब्ल्यू को कैसे दिखाता है)। मैं वास्तव में वर्षों के लिए कामना करता हूं कि यह फोटोशॉप में बनाया गया था, लेकिन अफसोस, बहुत उन्नत मुझे लगता है।

दुर्भाग्य से, मैं मैक के लिए इस तरह के एक प्लगइन का फ़ोटोशॉप CS6- संगत संस्करण नहीं पा सकता हूं, इसलिए मैं अभी अटक गया हूं। GraphicConverter इसे भी कर सकते हैं (अल्फा चैनल हटाएं)।


0

यहाँ जवाब है:

  1. छवि में इच्छित सामग्री के साथ एक परत बनाएं।

  2. वांछित अल्फा चैनल के लिए एक चयन करें।

  3. छवि परत के लिए चयन को "लेयर मास्क" बनाएं।

  4. लेयर मास्क और "लेयर मास्क लागू करें" पर राइट क्लिक करें।

अब जादू शुरू होता है:

  1. "लेयर" पर जाएं, और सबसे नीचे: "मैटिंग", फिर "ब्लैक मैट निकालें" चुनें।

आपका स्वागत है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.