2011-04-27 13 views
5

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

frame = Image.open(fname).load() 
a = frame[10, 10] 

अगर मैं एक GIF छवि को लोड, a पूर्णांक मान 43 है लेकिन अगर मैं छवि एक JPEG बदलने और कोड को फिर से चलाएं, a एक टपल (253, 254, 100) है।

क्यों? और मैं (253, 254, 100) को वापस 43 में कैसे परिवर्तित कर सकता हूं?

धन्यवाद।

उत्तर

5

जीआईएफ pallettized हैं, जबकि जेपीईजी आरजीबी हैं। छवि को बदलने के कार्य पैलेट के निपटारे का कार्य करते हैं, इसलिए आपको वांछित रंग के निकटतम मैच को खोजने के लिए जीआईएफ में पैलेट प्रविष्टियों को देखना होगा।

+0

आगे स्पष्टीकरण के लिए: एक जीआईएफ छवि में 256 रंगों की एक तालिका है (ऊपर)। प्रत्येक पिक्सेल में इस तालिका में एक अनुक्रमणिका होती है (आपके उदाहरण में, 10) जिसका उपयोग इसके रंग को निर्धारित करने के लिए किया जाता है। जेपीईजी प्रत्येक पिक्सेल के लिए आरजीबी मूल्यों को स्टोर करते हैं। यदि आप जीआईएफ की रंगीन तालिका में प्रवेश 10 देखते हैं, तो यह '' (253, 254, 100) '' (या इसके बहुत करीब) होना चाहिए। – Blair

संबंधित मुद्दे