2010-01-03 16 views
5

मैं अजगर का उपयोग कर एक jpeg फ़ाइल के लिए बिट गहराई प्राप्त करना चाहते हैं।मैं एक jpg फ़ाइल की गहराई कैसे मिल सकता है?

पायथन इमेजिंग पुस्तकालय का उपयोग करना:

import Image 
data = Image.open('file.jpg') 
print data.depth 

बहरहाल, यह मुझे एक स्पष्ट रूप से 24 बिट छवि के लिए 8 की गहराई देता है। क्या मुझसे कुछ गलत हो रही है? क्या शुद्ध पायथन कोड के साथ ऐसा करने का कोई तरीका है?

अग्रिम धन्यवाद।

संपादित करें: यह data.bits data.depth नहीं है।

+0

क्या आप वाकई सही फ़ंक्शन का उपयोग कर रहे हैं? मुझे पीआईएल हैंडबुक में गहराई नहीं मिली और शायद 8 का रिटर्न वैल्यू अभी भी सही है - यह "8 बिट्स प्रति पिक्सेल" के लिए खड़ा हो सकता है। – schnaader

+0

हाँ यह 8 बीपीपी है। क्या स्पष्ट नहीं था (मेरे लिए) यह था कि यह प्रत्येक बैंड के लिए माइक के जवाब के अनुसार था। – needthehelp

उत्तर

8

मैं depth विशेषता Python Imaging Library handbook में कहीं भी दस्तावेज नहीं दिख रहा। हालांकि, यह केवल modes की एक सीमित संख्या की तरह का समर्थन कर रहे लग रहा है।

mode_to_bpp = {'1':1, 'L':8, 'P':8, 'RGB':24, 'RGBA':32, 'CMYK':32, 'YCbCr':24, 'I':32, 'F':32} 

data = Image.open('file.jpg') 
bpp = mode_to_bpp[data.mode] 
5

जेपीईजी फाइल बिट गहराई जीआईएफ या पीएनजी फाइलों के समान तरीके से नहीं है। जेपीईजी डेटा बनाने के लिए प्रयुक्त ट्रांसफॉर्म डिकंप्रेशन पर निरंतर रंग स्पेक्ट्रम प्रस्तुत करता है।

3

जनहित याचिका "बैंड" प्रति बिट गहराई रिपोर्ट कर रहा है: आप कुछ इस तरह इस्तेमाल कर सकते हैं। मैं वास्तव में जनहित याचिका डॉक्स में एक दस्तावेज संपत्ति के रूप में depth देख पा रहे हैं नहीं है, तथापि, मुझे लगता है कि आप इस हैं:

data.depth * len(data.getbands()) 

या बेहतर अभी तक:

data.mode 

अधिक जानकारी के लिए here देखें।

1

मैं कहना है कि JPG छवियाँ परिभाषा से 24 बिट कर रहे हैं जा रहा था। वे आम तौर पर तीन 8 बिट रंग चैनल होते हैं, जिनमें से प्रत्येक लाल, हरे और नीले रंग के लिए 24 बिट प्रति पिक्सल बनाता है। हालांकि, मैं सिर्फ this page पाया है कहा गया है जो:

आप फ़ोटोशॉप का एक और अधिक आधुनिक संस्करण का उपयोग करते हैं, तो आप यह भी आप प्रति चैनल 16-बिट में काम करते हैं, जो आप 48 बिट देता दूँगी पर ध्यान देंगे प्रति पिक्सेल

लेकिन मुझे दो अलग-अलग बताए जाने के संदर्भ में कोई संदर्भ नहीं मिल रहा है।

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