2009-08-12 10 views
6

के साथ डेटाबेस से एक छवि पुनर्प्राप्त करना मेरे डेटाबेस में मैंने छवियों को "छवि" डेटा प्रकार में संग्रहीत किया है, जो बाइनरी कोड के रूप में दिखाई देता है। अब मैं एक कॉलम से सभी छवियों को पुनर्प्राप्त करना चाहता हूं और उन्हें एएसपीनेट पेज पर सी # के साथ डायप्ले करना चाहता हूं।लिंक से SQL

लेकिन वह काम नहीं करता क्योंकि बाइनरी चित्र में परिवर्तित नहीं किया जा सकता है:

databaseDataContext db = new databaseDataContext(); 

    var images = from Picture p in db.Pictures 
       select p.pictureThumb; 

तो मैं इस का उपयोग करें। मैंने यह गुगल किया है और पाया है कि मुझे बाइट और फिर छवि पर डालना है? हालांकि मुझे ऐसा करने के तरीके पर उदाहरण नहीं मिल रहे हैं।

उत्तर

11

यह करना चाहिए:

databaseDataContext db = new databaseDataContext(); 

var images = from p in db.Pictures 
      select Image.FromStream(new MemoryStream(p.pictureThumb.ToArray()); 
foreach (Image image in images) 
{ 
    galleryImages.Controls.Add(image); 
} 

ध्यान दें कि Image.FromStream धारा के स्वामित्व लेता है - यह केवल एक MemoryStream वैसे भी है, लेकिन यकीन है कि आप छवि के निपटान, विभिन्न कारणों के लिए कर सकता हूँ।


संपादित करें: आह ... मुझे एहसास नहीं हुआ कि यह एएसपी.नेट के लिए था। इससे चीजें कठिन हो जाती हैं - क्योंकि एचटीएमएल में यूआरएल होने जा रहा है, और फिर आपको बाद में डेटा लाने में सक्षम होना चाहिए।

क्या किसी तस्वीर में किसी प्रकार का आईडी है? यदि ऐसा है, तो वास्तविक डेटा की बजाय इसे प्राप्त करें, और उसके बाद एक यूआरएल स्थापित करें जो आईडी के आधार पर किसी भी थंबनेल की सेवा करने में सक्षम है (इसे डेटाबेस से लाकर और उचित सामग्री प्रकार के साथ इसे सेवा देकर)।

+0

धन्यवाद, जिसने बहुत सारी समस्याओं का ख्याल रखा। हालांकि मुझे लूप के साथ कुछ समस्याएं हैं, "सर्वश्रेष्ठ अधिभारित विधि मिलान [...] में कुछ अमान्य तर्क हैं"। गैलरी छवियों को प्लेसहोल्डर को संदर्भित किया जाता है, लेकिन अन्य संभावनाएं (शाब्दिक, छवि, आदि) एक ही त्रुटि देते हैं। प्लस जोड़ें (छवि) मुझे बताता है "सिस्टम से बदल नहीं सकता है। ड्रॉइंग.इमेज 'से' System.Web.UI.Control ''। मैं शर्त लगाता हूं कि यह काफी स्पष्ट है। मैं .NET: o – Kablam

+1

के साथ बहुत अनुभवहीन हूं :) यह किया गया :) डेटाबेस से चित्र आईडी पुनर्प्राप्त करें, फिर वास्तविक इमेजडेटा निकालने के लिए getImage.aspx.cs का उपयोग करें। ContentType = "image/jpeg" का प्रयोग करें; और बाइनरीवाइट। धन्यवाद जॉन! – Kablam

+0

कूल - किसी ऐसे व्यक्ति के लिए जो "बहुत अनुभवहीन" होने का दावा करता है जो कि वास्तव में त्वरित बदलाव था :) –

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