JPEG त्रुटि 42 की सूचना तब दी जाती है जब स्ट्रीम को छोटा कर दिया जाता है। उदाहरण के लिए, यदि आप एक शून्य लंबाई वाली फ़ाइल को TJPEGImage
. में लोड करने का प्रयास करते हैं तो त्रुटि 42 अंतिम परिणाम है।
यदि कुछ छवियां प्रदर्शित होती हैं, लेकिन सभी नहीं, तो सबसे अधिक संभावित स्पष्टीकरण यह है कि डेटा किसी तरह डीबी और पीछे की ओर चक्कर नहीं लगा रहा है।
जब आप इसे लिखते हैं तो BLOB फ़ील्ड के आकार की जाँच करें। जब आप इसे डिस्क फ़ाइल में लिखते हैं, तो जांचें कि यह फ़ाइल के आकार से मेल खाता है। जांचें कि डिस्क फ़ाइल एक मान्य JPEG है। फिर पुष्टि करें कि जब आप इसे दोबारा पढ़ते हैं तो BLOB फ़ील्ड की लंबाई समान होती है। शायद आपके DB कोड में कुछ गड़बड़ है और स्ट्रीम को छोटा किया जा रहा है।
तो, यहां पहला कदम यह पुष्टि करना है कि आप ठीक उसी डेटा को पुनर्प्राप्त कर सकते हैं जिसे आपने मूल रूप से डीबी में डाला था।
मेरे पास एकमात्र अन्य विचार यह है कि छवि नियंत्रण में ग्राफिक हमेशा जेपीईजी नहीं होता है। छवि लोड करने के लिए आप जिस कोड का उपयोग करते हैं, Image1.Picture.Graphic.LoadFromStream()
मानता है कि डेटा एक जेपीईजी है। अगर आपने JPEG के अलावा कुछ और सेव किया था तो LoadFromStream()
विफल हो जाएगा।