2014-09-22 6 views
5

मैं फ्रीआईमेज का उपयोग कर एक टीआईएफएफ फ़ाइल को जेपीईजी में बदलने की कोशिश कर रहा हूं।टीआईएफएफ को जेपीईजी में कैसे परिवर्तित करें?

समस्या यह है कि FreeIamge.SaveToStream वास्तव में कुछ भी नहीं करता है। यहां तक ​​कि कॉल के बाद, stream एक Length, Capacity और 0.

की Position है यह मेरा कोड है:

using (var stream = new MemoryStream()) 
{ 
    var image = FreeImage.LoadEx(fileName); 
    FreeImage.SaveToStream(image, stream, FREE_IMAGE_FORMAT.FIF_JPEG, 
          FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYSUPERB); 

    // stream.Length, stream.Capacity & stream.Position are all 0 here 
} 

क्या मैं गलत कर रहा हूँ?

+4

पहले स्ट्रीम को रीवाइंड करने का प्रयास करें, देखें कि यह बनी रहती है या नहीं। –

+2

जिज्ञासा से, 'मेमोरीस्ट्रीम' का उपयोग क्यों कर रहे हैं? क्यों न केवल 'SaveToStream' को' FileStream' पर कॉल करें? – vcsjones

+0

@TheodorosChatzigiannakis: इससे मदद नहीं मिलती है। ['MemoryStream.WriteTo'] (http://msdn.microsoft.com/en-us/library/system.io.memorystream.writeto (v = vs.110) .aspx) * पूरे * सामग्री की' मेमोरीस्ट्रीम 'अन्य धारा में। यह दस्तावेज है। इसके अलावा, मैंने जांच की: 'मेमोरीस्ट्रीम' की लंबाई, क्षमता और 0 –

उत्तर

1

समस्या इनपुट थी - एक और छवि लाइब्रेरी द्वारा बनाई गई 16 बिट छवि। ऐसा लगता है कि फ्री इमेज में 16 बिट छवियों के साथ कुछ समस्याएं हैं क्योंकि जीडीआई + बिना किसी समस्या के इसे पढ़ सकता है। मैंने 24 बिट छवि में इनपुट स्विच किया और मेरे प्रश्न में कोड काम करना शुरू कर दिया।

+0

श्वास ... पुस्तकालयों की खुशी जो अपवाद हैंडलिंग का उपयोग नहीं कर रही हैं। [ऐसा लगता है कि 'SaveToStream' सफलता/विफलता के लिए' बूल' देता है] (http://freeimage.sourceforge.net/fnet/html/4A01CFCD.htm)। –

+0

@UweKeim: सच है। मैंने कभी यह भी महसूस नहीं किया कि ... –

+0

"जीडीआई + बिना किसी समस्या के इसे पढ़ सकता है" - जीडीआई + 16-बिट टीआईएफएफ पढ़ सकता है? पीएनजी फाइलों के साथ मेरा अनुभव (मैं बस इसमें भाग गया) वह सिस्टम है। ड्रॉइंग.इमेज (जीडीआई + के लिए .NET wrapper) 16-बिट से 8-बिट डाउनकॉर्वर करता है और आरजीबीए को सिंगल-चैनल गुणा करता है, लेकिन मैंने अभी तक टीआईएफएफ की कोशिश नहीं की है । –

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