2010-04-15 17 views
6

पर लोड होने में विफल होती हैं मेरे पास एक Windows Server 2008 पर चल रहा एक अनुप्रयोग है, जो अपलोड की गई छवियों को संसाधित कर रहा है। वर्तमान में यह प्रति दिन लगभग 8000 छवियों को सफलतापूर्वक संसाधित करता है, प्रत्येक छवि के 11 अलग-अलग आकार बनाते हैं।कुछ छवियां Windows Server 2008

मेरी समस्या यह है कि कभी-कभी एप्लिकेशन कुछ छवियों को लोड करने में विफल रहता है, मुझे त्रुटि मिलती है "System.Runtime.InteropServices.ExternalException: जीडीआई + में एक सामान्य त्रुटि आई।"।

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

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

जब मैं ब्रिज में छवि की जानकारी देखता हूं, तो मुझे लगता है कि छवियों को Picasa 3.0 का उपयोग करके बनाया गया है, लेकिन इसके अलावा मैं उनके बारे में कुछ विशेष नहीं देख सकता। मुझे अभी तक किसी को भी एक ही समस्या नहीं है, या Picasa एप्लिकेशन के साथ इस तरह की कोई ज्ञात समस्या नहीं मिली है।

क्या किसी को भी ऐसी ही समस्या है, या पता है कि Picasa का उपयोग करके बनाई गई छवियों के बारे में कुछ खास है या नहीं? क्या कोई छवि कोडेक है जिसे सर्वर पर सभी प्रकार की जेपीईजी छवियों को संभालने की आवश्यकता है?

यहां एक ऐसी छवि का उदाहरण दिया गया है जो सर्वर पर लोड नहीं होता है: gdi-example.jpg (1 9 2 केबी)।

+0

दिलचस्प। मैं विंडोज सर्वर 2008 और 2003 पर अपनी उदाहरण छवि का उपयोग करके इसकी पुष्टि कर सकता हूं (हालांकि चित्र दर्शक मुझे 2003 में 1x1 पिक्सेल छवि देता है)। छवि के साथ कुछ भी गलत नहीं देख सकता। विंडोज 7 पर, यह ठीक खुलता है। यह कुछ सुरक्षा संबंधित जीडीआई पैच या कुछ हो सकता है, लेकिन मुझे नहीं पता कि क्या करना है। –

+0

@ पेक्का: इसकी पुष्टि करने के लिए धन्यवाद, तो मुझे कम से कम पता है कि समस्या ओएस संस्करण से संबंधित होने की संभावना है, न केवल यह सर्वर। – Guffa

उत्तर

2

विशेषज्ञों के आदान-प्रदान से मुझे छवि लोड करने और इसे मेमोरीस्ट्रीम में सहेजने के लिए बिटमैप छवि वस्तु का उपयोग करके एक उदाहरण मिला। BitmapImage कुछ कारणों से छवियों को लोड कर सकता है जो बिटमैप ऑब्जेक्ट नहीं कर सकता है।

मुझे फ़ाइल से डेटा लोड करना पड़ा और इसे बिटमैप छवि को मेमोरीस्ट्रीम के रूप में फ़ीड करना पड़ा, ताकि वह फ़ाइल को लॉक न करे।

using WpfImaging = System.Windows.Media.Imaging; 
... 

byte[] data = File.ReadAllBytes(FileName); 

Image master; 
using (MemoryStream source = new MemoryStream(data)) { 
    var img = new WpfImaging.BitmapImage(); 
    img.BeginInit(); 
    img.StreamSource = source; 
    img.EndInit(); 
    WpfImaging.BmpBitmapEncoder encoder = new WpfImaging.BmpBitmapEncoder(); 
    using (MemoryStream m = new MemoryStream()) { 
    encoder.Frames.Add(WpfImaging.BitmapFrame.Create(img)); 
    encoder.Save(m); 
    master = new Bitmap(m); 
    } 
} 
0

मुझे लगता है कि यह EXIF ​​हेडर पिकासा द्वारा उत्पन्न की जानकारी में कुछ होना चाहिए:

तो, यह अंतिम कोड (बिना कुछ लॉगिंग) कि मैं अब का उपयोग करें। मुझे एक ही समस्या थी - हजारों छवियों को संसाधित करना, लेकिन कभी-कभी कुछ प्रक्रिया करना नहीं चाहते थे। मैंने यहां क्लोनिंग फिक्स का उपयोग किया: How can I get .Net to save this image?

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