2011-07-21 12 views
8

मैं एक JPEG/JFIF एनकोडर और खरोंच से डिकोडर सी मैं एक नमूना JPEG फ़ाइल लिख प्रयोग का उपयोग कर लिखने के लिए कोशिश कर रहा हूँ, लेकिन ऐसा लगता है कि मैं एमएस पेंट का उपयोग कर, फायरफॉक्स यह नहीं खोल सकता। लेकिन मैं इसे JPEGsnoop (http://www.impulseadventure.com/photo/jpeg-snoop.html?ver=1.5.2) और http://nothings.org/stb_image.c का उपयोग करके डीकोड कर सकता हूं। मुझे लगता है कि नमूना जेपीईजी फ़ाइल जेपीईजी/जेएफआईएफ मानक का अनुपालन करती है, मुझे नहीं पता कि एमएस पेंट और फ़ायरफ़ॉक्स जैसे एप्लिकेशन इसे क्यों नहीं खोल सकते हैं।jpeg फ़ाइल प्रारूप सवाल

यहाँ कैसे नमूना जेपीईजी की तरह लग रहा है:

 

    SOI 
     APP0 segment 
     DQT segment (contains two quantization tables) 
     COM segment 
     SOF0 segment 
     DHT segment (contains four Huffman tables) 
     SOS segment 
     huffman encoded data 
    EOI 

नमूना JPEG फ़ाइल तीन घटक Y Cb Cr है। सीबी सीआर घटक के लिए कोई सबमप्लिंग नहीं। दो क्वांटिज़ेशन टेबल सभी से भरे हुए हैं। DHT सेगमेंट में चार Huffman टेबल सब समान हैं, यह इस

 

     [0 0 0 0 0 0 0 255 0 0 0 0 0 0 0 0] 
     [0,1,2, ... , 254] 

तरह लग रहा है इसका मतलब है कि सभी कोड 8bits हैं, इसलिए Huffman एन्कोडिंग वास्तव में डेटा को संपीड़ित नहीं है।

Huffman इनकोडिंग डेटा कुछ ऐसा दिखाई:

 

     [0x0000(DC) 0x0000(AC)](Y) 
     [0x0000(DC) 0x0000(AC)](Cb) 
     [0x0000(DC) 0x0000(AC)](Cr) for all (i, j) MCUs except (10, 10) 

     the data in (10, 10) MCU: 
     [0x0008(DC) 0x0000(DC), 0x0000(AC)](Y) 
     [0x0000(DC) 0x0000(AC)](Cb) 
     [0x0000(DC) 0x0000(AC)](Cr) 

किसी को भी मुझे बता सकते हैं क्या इस नमूने JPEG फ़ाइल के साथ गलत क्या है? धन्यवाद।

यहाँ नमूना JPEG फ़ाइल (ha.jpg) http://www.guoxiaoyong.net/ha.jpg

+1

पुनर्रचना बचाने आपको एक उदाहरण फाइल करने के लिए एक लिंक प्रदान कर सके हैं? –

+0

क्यों बंद करें? पोस्टर ने बहुत काम किया है, स्पष्ट रूप से सवाल पूछा और समझाया कि वे क्या कर रहे हैं। –

उत्तर

4

मैं एक ऐसी ही समस्या साल पहले कुछ पीएनजी कोड के साथ किया था के लिए एक लिंक (हालांकि मैं खरोंच से यह नहीं लिखा था) है। यह पता चला है कि मेरा कोड विंडोज़, कुछ ब्राउज़रों इत्यादि के पुस्तकालयों की तुलना में अधिक मानकों का अनुपालन करता है। उन्होंने ठेठ मामलों पर ठीक किया, लेकिन असामान्य और प्रदूषित छवियों पर दबाया, भले ही वे मानक के अनुरूप पूरी तरह से हों। उन्हें यात्रा करने का एक आम तरीका छवि के लिए एक विषम पिक्सेल चौड़ाई का उपयोग करना था। मेरे टेस्ट सूट का लगभग आधा विंडोज के साथ देखने योग्य नहीं था। (यह कई संस्करणों पहले किया गया था, Windows 95 विंडोज codecs की तरह काफी हद तक सुधार हुआ है।)

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

आप एक ही कर सकता है। मेरा मानना ​​है कि एक ओपन सोर्स जेपीईजी लाइब्रेरी है जिसका व्यापक रूप से संदर्भ कार्यान्वयन के रूप में उपयोग किया जाता है।

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

0

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

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

0

फ़ायरफ़ॉक्स, (और कई अन्य ऐप्स AFAIK) Independent JPEG group से ओपन-सोर्स जेपीईजी लाइब्रेरी पर आधारित है।

आप इसके लिए स्रोत डाउनलोड कर सकते हैं, और फिर देखें कि क्यों और कब आपकी फ़ाइल पसंद नहीं है।

इसके अलावा, इस आप पहिया :-)

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