સામાન્ય ઇમેજનો દરેક પિક્સેલ ત્રણ આંકડાથી વર્ણવાય છે: તેમાં કેટલો લાલ, લીલો અને વાદળી છે. પિક્સેલ કયા રંગનો છે તે કહેવા માટે એટલું પૂરતું છે, પણ તેમાંથી આરપાર દેખાય કે નહીં તે નહીં. આલ્ફા ચેનલ દરેક પિક્સેલનો ચોથો આંકડો છે જે બરાબર એ જ કરે છે: તે અપારદર્શકતા સાચવે છે, પૂરેપૂરા ટ્રાન્સપરન્ટથી પૂરેપૂરા અપારદર્શક સુધી.
લોકો "ટ્રાન્સપરન્ટ બેકગ્રાઉન્ડવાળો PNG" કહે ત્યારે તેમનો અર્થ એવી આલ્ફા ચેનલવાળી ઇમેજ છે જેમાં બેકગ્રાઉન્ડના પિક્સેલનો આલ્ફા શૂન્ય છે. આ ગાઇડ સમજાવે છે કે એ આંકડો કેવી રીતે કામ કરે છે, સોફ્ટવેર તેને કઈ બે રીતે સાચવે છે, કિનારી કેમ બગડે છે, અને ફાઇલમાં ખરેખર શું છે તે કેવી રીતે તપાસવું.
RGBA: દરેક પિક્સેલમાં ચાર ચેનલ
MDN આલ્ફા ચેનલની વ્યાખ્યા સરળ રીતે આપે છે: રંગ ચેનલથી બને છે (લાલ, લીલો અને વાદળી), અને એવો રંગ દર્શાવવા "જેમાંથી થોડે અંશે બેકગ્રાઉન્ડ દેખાય", ચોથી ચેનલ ઉમેરાય છે. ચારેય હોય તેવી ઇમેજને RGBA કહે છે.
મૂલ્ય ઘણી રીતે લખી શકાય, અને બધાંનો અર્થ એક જ છે:
| લખવાની રીત | પૂરેપૂરું ટ્રાન્સપરન્ટ | અડધું ટ્રાન્સપરન્ટ | પૂરેપૂરું અપારદર્શક |
|---|---|---|---|
| 8-બિટ પૂર્ણાંક (મોટા ભાગની ઇમેજ ફાઇલ) | 0 | 128 | 255 |
| 16-બિટ પૂર્ણાંક (16-બિટ PNG) | 0 | 32768 | 65535 |
| અપૂર્ણાંક (કમ્પોઝિટિંગનું ગણિત, CSS) | 0 | 0.5 | 1 |
| ટકાવારી (CSS) | 0% | 50% | 100% |
Hex સફિક્સ (CSS #rrggbbaa) | 00 | 80 | ff |
PNG સ્પેસિફિકેશન તેને ચોક્કસ રીતે કહે છે: આલ્ફા મૂલ્ય શૂન્ય એટલે પૂરી ટ્રાન્સપરન્સી, બિટ ડેપ્થનું મહત્તમ મૂલ્ય એટલે પૂરી અપારદર્શકતા, અને વચ્ચેનાં મૂલ્યો આંશિક ટ્રાન્સપરન્ટ પિક્સેલ છે "જેને બેકગ્રાઉન્ડ ઇમેજ સામે કમ્પોઝિટ કરી શકાય".
એ વચ્ચેનાં મૂલ્યો જ મહત્વનો ભાગ છે. સારું કટઆઉટ માત્ર "સબ્જેક્ટ અપારદર્શક, બેકગ્રાઉન્ડ ટ્રાન્સપરન્ટ" નથી. કિનારી પરના પિક્સેલ, ખાસ કરીને વાળ, રુવાંટી, કાપડ, કાચ અને મોશન બ્લરમાં, આંશિક ટ્રાન્સપરન્ટ હોય છે, અને તેનાથી જ નવા બેકગ્રાઉન્ડ પર સબ્જેક્ટ કાતરથી કાપેલો લાગવાને બદલે કુદરતી લાગે છે.
ટ્રાન્સપરન્ટ પિક્સેલ કેવી રીતે દોરાય છે
કોઈ એપ તમારી ઇમેજને બીજી વસ્તુ ઉપર મૂકે ત્યારે દરેક પિક્સેલને પાછળની વસ્તુ સાથે ભેળવે છે. W3C Compositing and Blending સ્પેસિફિકેશન મૂળ સૂત્ર આપે છે:
result = Cs x as + Cb x ab x (1 - as)
Cs, as = color and alpha of your image (the source)
Cb, ab = color and alpha of what is behind it (the backdrop)અપારદર્શક બેકડ્રોપના સામાન્ય કિસ્સામાં તે ભારિત સરેરાશ બની જાય છે. આલ્ફા 0.3 વાળો પિક્સેલ પોતાના રંગનો 30% આપે છે અને બેકગ્રાઉન્ડનો 70% દેખાવા દે છે.
Straight વિરુદ્ધ premultiplied આલ્ફા
આંશિક ટ્રાન્સપરન્ટ પિક્સેલનો રંગ સાચવવાની બે રીત છે, અને બંનેની ગરબડ ઘેરી કે ચમકતી ફ્રિન્જનું જાણીતું કારણ છે.
Straight આલ્ફા (unassociated કે non-premultiplied પણ કહેવાય) રંગને એવી રીતે સાચવે છે જાણે પિક્સેલ પૂરેપૂરો અપારદર્શક હોય, અને અપારદર્શકતા અલગ રાખે છે. અડધો ટ્રાન્સપરન્ટ શુદ્ધ લાલ પિક્સેલ red 255, green 0, blue 0, alpha 128 તરીકે સચવાય છે.
Premultiplied આલ્ફા (associated પણ કહેવાય) રંગને પહેલેથી આલ્ફાથી ગુણીને સાચવે છે. એ જ પિક્સેલ red 128, green 0, blue 0, alpha 128 તરીકે સચવાય છે. PNG સ્પેસિફિકેશનના શબ્દોમાં, આવી ઇમેજ "પહેલેથી કાળા બેકગ્રાઉન્ડ સામે કમ્પોઝિટ થયેલી છે".
કઈ ફાઇલ કઈ રીત વાપરે તે ફોર્મેટ અને સોફ્ટવેર પર આધાર રાખે છે:
- PNG હંમેશાં straight આલ્ફા વાપરે છે. સ્પેસિફિકેશન આ સ્પષ્ટ કહે છે, અને નોંધે છે કે તેનાથી એડિટર ઇમેજની ટ્રાન્સપરન્સી સહેલાઈથી બદલી શકે છે.
- ગ્રાફિક્સ પાઇપલાઇન, ગેમ એન્જિન અને વીડિયો કમ્પોઝિટિંગ ટૂલ ઘણી વાર અંદર premultiplied આલ્ફામાં કામ કરે છે, કારણ કે બ્લેન્ડિંગનું ગણિત સરળ છે અને ફિલ્ટરિંગ સારું વર્તે છે.
સમસ્યા ત્યારે શરૂ થાય છે જ્યારે એક પ્રોગ્રામ premultiplied મૂલ્યો લખે અને બીજો તેને straight તરીકે વાંચે. કિનારીના રંગ વધુ ઘેરા આવે છે, જેનાથી પાતળી કાળી આઉટલાઇન બને છે. ઊલટું થાય તો કિનારી વધુ ચમકતી બને છે. એક ટૂલના દરેક કટઆઉટ પર એકસરખી ઘેરી કિનારી દેખાય, તો સૌથી પહેલાં premultiplication ના મેળ ન ખાવાની શંકા કરો.
કટઆઉટમાં હેલો કેમ આવે છે
હેલો એટલે સબ્જેક્ટની આસપાસ દેખાતી કિનારી જે તેનો ભાગ નથી. ચાર સામાન્ય કારણો છે, અને દરેકનો પોતાનો ઉકેલ છે.
1. જૂનું બેકગ્રાઉન્ડ કિનારીના પિક્સેલમાં ભળેલું છે
કેમેરા ક્યારેય સાફ સીમા પકડતો નથી. લીલી વાડ સામે વાળની લટ એવા પિક્સેલ બનાવે છે જે અંશતઃ વાળ અને અંશતઃ વાડ હોય. કટઆઉટ એ પિક્સેલના મૂળ રંગ રાખીને માત્ર તેમને અર્ધ-ટ્રાન્સપરન્ટ બનાવે, તો લીલો રંગ ભળેલો રહે છે. સફેદ પર મૂકો તો સબ્જેક્ટની આસપાસ હળવી લીલી ઝાંય દેખાય છે.
ઉકેલ છે કલર ડિકન્ટેમિનેશન: દરેક કિનારી પિક્સેલનો સાચો ફોરગ્રાઉન્ડ રંગ અંદાજીને તેને લખવો. Photoshop માં “Select and Mask” વર્કસ્પેસમાં તેને “Decontaminate Colors” કહે છે, અને ઓપન-સોર્સ rembg લાઇબ્રેરીમાં decontaminate વિકલ્પ એ જ કામ કરે છે. તે કિનારીના રંગ બદલે છે, માસ્કનો આકાર ક્યારેય નહીં.
2. માસ્ક બહુ સખત છે
માસ્કમાં માત્ર પૂરેપૂરા અપારદર્શક અને પૂરેપૂરા ટ્રાન્સપરન્ટ પિક્સેલ હોય, તો કિનારી ખરબચડી દેખાય છે, અને મૂળ ફોટાનું કોઈ પણ એન્ટિએલિયાસિંગ સબ્જેક્ટની આસપાસ બેકગ્રાઉન્ડ રંગની એક પિક્સેલની રેખા છોડી જાય છે. વાળ જેવા નરમ સબ્જેક્ટને સાચાં વચ્ચેનાં મૂલ્યોવાળો નરમ માસ્ક જોઈએ.
3. ટ્રાન્સપરન્ટ પિક્સેલમાં છુપાયેલા રંગ
Straight-આલ્ફા ફાઇલમાં આલ્ફા શૂન્યવાળા પિક્સેલનાં પણ લાલ, લીલાં અને વાદળી મૂલ્યો હોય છે. તમે તેને જોઈ શકતા નથી, પણ રિસાઇઝ કે બ્લર કરવાથી બાજુના પિક્સેલ ભળે છે, અને એ છુપાયેલા રંગ સફેદ કે કાળા હોય તો દેખાતી કિનારીમાં રેલાઈ આવે છે. સારી ઇમેજ લાઇબ્રેરી રિસાઇઝ પહેલાં premultiply કરીને અને પછી પાછું ફેરવીને આ ટાળે છે.
4. ઇમેજ કોઈ રંગ પર ફ્લેટન કરાઈ હતી
GIF અને પેલેટ PNG ઘણી વાર માત્ર ચાલુ-કે-બંધ ટ્રાન્સપરન્સી સપોર્ટ કરે છે, તેથી ટૂલ સેવ કરતાં પહેલાં કિનારીને મેટ રંગ, સામાન્ય રીતે સફેદ, સામે એન્ટિએલિયાસ કરે છે. એ ઇમેજ સફેદ પર બરાબર દેખાય છે અને ઘેરી કોઈ પણ વસ્તુ પર સફેદ ફ્રિન્જ બતાવે છે. તમારું કટઆઉટ ઘેરા બેકગ્રાઉન્ડ પર મુકાવાનું હોય તો પૂરી આલ્ફા સાથે એક્સપોર્ટ કરો.
માસ્ક, મેટ અને આલ્ફા: શબ્દભંડોળ
આ શબ્દો એકબીજામાં ભળે છે અને ઢીલી રીતે વપરાય છે. સામાન્ય રીતે તેનો અર્થ આ હોય છે:
- આલ્ફા ચેનલ: ઇમેજ ફાઇલની અંદર સચવાયેલાં અપારદર્શકતાનાં મૂલ્યો, દરેક પિક્સેલ માટે એક.
- માસ્ક: એક ગ્રેસ્કેલ ઇમેજ જે નક્કી કરે છે કે બીજી ઇમેજના કયા ભાગ દેખાય. Photoshop ના લેયર માસ્કમાં સફેદ બતાવે છે અને કાળો છુપાવે છે, અને ગ્રે આંશિક દેખાય છે. મૂળ પિક્સેલને અડ્યા વગર માસ્ક એડિટ કરી શકાય છે, તેથી જ વ્યાવસાયિકો ભૂંસવાને બદલે માસ્કથી બેકગ્રાઉન્ડ રિમૂવ કરે છે.
- મેટ: એ જ વિચાર માટે ફિલ્મ અને કમ્પોઝિટિંગનો શબ્દ, એક ગ્રેસ્કેલ ઇમેજ જે નક્કી કરે છે કે શું રાખવું. "Matting" એટલે વાળ જેવી મુશ્કેલ કિનારી માટે નરમ, ચોક્કસ મેટ ગણવાનો પ્રશ્ન.
- ટ્રાઇમેપ: આશરે ત્રણ ઝોનનો નકશો (ચોક્કસ ફોરગ્રાઉન્ડ, ચોક્કસ બેકગ્રાઉન્ડ, અનિશ્ચિત) જેને કેટલાક મેટિંગ અલ્ગોરિધમ શરૂઆત તરીકે વાપરે છે.
- બાઇનરી કે હાર્ડ માસ્ક: માત્ર કાળો અને સફેદ, ગ્રે નહીં. બોક્સ અને લોગો માટે બરાબર, વાળ માટે ખરાબ.
- કટઆઉટ: તૈયાર પરિણામ, સબ્જેક્ટના રંગ અને એક આલ્ફા ચેનલ.
માસ્ક અને આલ્ફા ચેનલ એક જ માહિતી રાખે છે. ઘણાં ટૂલ બંનેમાંથી કોઈ પણ એક્સપોર્ટ કરવા દે છે: આલ્ફા અંદર હોય એવો ટ્રાન્સપરન્ટ PNG, અથવા અલગ કાળો-સફેદ માસ્ક ઇમેજ જે તમે જાતે એડિટર કે વીડિયો ટૂલમાં લાગુ કરી શકો.
કયાં ફોર્મેટ આલ્ફા સાચવી શકે
| ફોર્મેટ | આલ્ફા સપોર્ટ |
|---|---|
| PNG | પૂરી આલ્ફા (8 કે 16 બિટ), કે એક ટ્રાન્સપરન્ટ પેલેટ રંગ |
| WebP | પૂરી આલ્ફા, lossless અને lossy બંને મોડમાં |
| AVIF | પૂરી આલ્ફા |
| GIF | માત્ર ચાલુ કે બંધ: પેલેટનો એક રંગ ટ્રાન્સપરન્ટ ગણાય |
| JPEG | નથી |
આ ફોર્મેટની પૂરી સરખામણી માટે જુઓ PNG વિરુદ્ધ JPEG વિરુદ્ધ WebP.
ઇમેજમાં ટ્રાન્સપરન્સી છે કે નહીં તે કેવી રીતે તપાસવું
.png થી પૂરી થતી ફાઇલ ટ્રાન્સપરન્સીનો પુરાવો નથી. ઘણાં PNG પૂરેપૂરાં અપારદર્શક હોય છે, અને ઓનલાઇન મળતી કેટલીક "ટ્રાન્સપરન્ટ" ઇમેજ ખરેખર JPEG હોય છે જેના પિક્સેલમાં ગ્રે અને સફેદ ચેકરબોર્ડ દોરેલું હોય. તપાસવાની વિશ્વસનીય રીતો આ રહી.
આંખથી
ઇમેજને એક ઘેરા અને એક આછા બેકગ્રાઉન્ડ પર મૂકો, ઉદાહરણ તરીકે સ્લાઇડ કે ડિઝાઇન ટૂલમાં. સાચું કટઆઉટ બંને કિસ્સામાં સબ્જેક્ટની આસપાસ બેકગ્રાઉન્ડનો રંગ બતાવે છે. તેમ છતાં ચેકરબોર્ડ દેખાય તો તે ચિત્રનો ભાગ છે, ટ્રાન્સપરન્સી નહીં.
ImageMagick વડે
# Does the file have an alpha channel at all?
identify -format "%A\n" photo.png
# Is it fully opaque anyway? (true means no visible transparency)
identify -format "%[opaque]\n" photo.png%A ટ્રાન્સપરન્સી ચેનલ વિશે જણાવે છે (કયો શબ્દ છપાય તે ImageMagick 6 અને 7 માં અલગ છે), અને %[opaque] ગણે છે કે દરેક પિક્સેલ પૂરેપૂરો અપારદર્શક છે કે નહીં. તમને આલ્ફા ચેનલ અને false જોઈએ.
Python અને Pillow વડે
from PIL import Image
im = Image.open("photo.png")
print(im.mode) # RGBA or LA means an alpha channel
print(im.has_transparency_data) # True if the file carries any transparency info
if "A" in im.getbands():
lo, hi = im.getchannel("A").getextrema()
print("alpha range:", lo, hi) # lo == 255 means nothing is transparentExtrema ની તપાસ એ સામાન્ય કિસ્સો પકડે છે જેમાં RGBA ફાઇલનો દરેક પિક્સેલ અપારદર્શક હોય.
પ્લેટફોર્મ આલ્ફાને અવગણે ત્યારે
કેટલીક જગ્યાઓ ટ્રાન્સપરન્સી કાઢી નાખે છે કે અવગણે છે. Etsy કહે છે કે ટ્રાન્સપરન્ટ PNG સપોર્ટ નથી અને ટ્રાન્સપરન્ટ ભાગ કાળા દેખાઈ શકે, અને Amazon તથા Walmart જેવાં માર્કેટપ્લેસ આમ પણ મેઇન ઇમેજ શુદ્ધ સફેદ પર માગે છે. એવા કિસ્સામાં કટઆઉટને જાતે બેકગ્રાઉન્ડ રંગ પર ફ્લેટન કરો જેથી પરિણામ તમારા નિયંત્રણમાં રહે. તમારી પોતાની વેબસાઇટ, સ્લાઇડ અને ડિઝાઇન ટૂલમાં આલ્ફા રાખો.
ઝડપથી સાફ આલ્ફા ચેનલ મેળવવી
સખત માસ્કને બદલે નરમ કિનારીવાળાં કટઆઉટ જોઈએ તો removebackground.dev પૂરી આલ્ફા ચેનલ સાથે ટ્રાન્સપરન્ટ PNG કે WebP ફાઇલ બનાવે છે, અને તેની API ગ્રેસ્કેલ માસ્ક અલગથી પણ આપી શકે છે.
પ્રશ્નો
RGBA નો અર્થ શું છે?
લાલ, લીલો, વાદળી અને આલ્ફા. પહેલા ત્રણ પિક્સેલનો રંગ વર્ણવે છે અને ચોથો તેની અપારદર્શકતા, 0 (પૂરેપૂરું ટ્રાન્સપરન્ટ) થી મહત્તમ મૂલ્ય (8-બિટ ઇમેજમાં 255) સુધી, જે પૂરેપૂરું અપારદર્શક છે.
Straight અને premultiplied આલ્ફા વચ્ચે શું ફરક છે?
Straight આલ્ફા પિક્સેલનો પૂરો રંગ અને તેની અપારદર્શકતા અલગ સાચવે છે. Premultiplied આલ્ફા રંગને પહેલેથી અપારદર્શકતાથી ગુણીને સાચવે છે, જાણે કાળા પર કમ્પોઝિટ થયો હોય. PNG હંમેશાં straight આલ્ફા વાપરે છે; ઘણાં રેન્ડરિંગ અને વીડિયો ટૂલ અંદર premultiplied વાપરે છે.
મારા કટઆઉટની આસપાસ સફેદ કે રંગીન આઉટલાઇન કેમ છે?
સામાન્ય રીતે જૂનું બેકગ્રાઉન્ડ હજી કિનારીના પિક્સેલમાં ભળેલું હોય છે, અથવા સેવ કરતાં પહેલાં ઇમેજ સફેદ સામે એન્ટિએલિયાસ થઈ હતી. કિનારીના રંગ ડિકન્ટેમિનેટ કરવા, નરમ માસ્ક વાપરવો, અને મેટ રંગને બદલે પૂરી આલ્ફા સાથે એક્સપોર્ટ કરવાથી મોટા ભાગના કિસ્સા સુધરે છે.
શું માસ્ક અને આલ્ફા ચેનલ એક જ છે?
બંને એક જ માહિતી રાખે છે: દરેક પિક્સેલ માટે એક ગ્રેસ્કેલ મૂલ્ય, જે કહે છે કે તે કેટલો દેખાય. આલ્ફા ચેનલ ઇમેજ ફાઇલની અંદર સચવાય છે; માસ્ક સામાન્ય રીતે અલગ ગ્રેસ્કેલ ઇમેજ કે એડિટરમાં લેયર માસ્ક હોય છે.
PNG સાચે જ ટ્રાન્સપરન્ટ છે કે નહીં તે કેવી રીતે જાણવું?
તેને એક ઘેરા અને એક આછા બેકગ્રાઉન્ડ પર મૂકો અને તપાસો કે બેકગ્રાઉન્ડ દેખાય છે. અથવા ImageMagick નું identify %[opaque] સાથે ચલાવો, કે Pillow માં આલ્ફા ચેનલનું લઘુતમ મૂલ્ય તપાસો; લઘુતમ 255 એટલે કંઈ ટ્રાન્સપરન્ટ નથી.
તમારી પોતાની ઇમેજ પર અજમાવો
નવા એકાઉન્ટને 50 મફત ક્રેડિટ મળે છે. દરેક ઇમેજ માટે 1 ક્રેડિટ, કોઈ સબ્સ્ક્રિપ્શન નહીં, અને ક્રેડિટ ક્યારેય સમાપ્ત થતી નથી.
બેકગ્રાઉન્ડ દૂર કરોસ્રોત
- MDN: Alpha (alpha channel) glossary entry
- W3C: Portable Network Graphics (PNG) Specification (Third Edition)
- W3C: Compositing and Blending Level 1, simple alpha compositing
- MDN: Image file type and format guide
- Adobe Help: Select and Mask in Photoshop
- Adobe: Remove background with AI in Photoshop (layer masks)
- rembg README: color decontamination and edge modes
- ImageMagick: Format and print image properties (escapes)
- Pillow: Image module reference
- Etsy Help: Requirements and best practices for images in your Etsy shop