2009-02-24 8 views
12

पर एक छवि में एक बाइट [] लोड करें मेरे पास byte[] है जो Image द्वारा दर्शाया गया है। मैं को WebClient के माध्यम से डाउनलोड कर रहा हूं। जब WebClient ने चित्र डाउनलोड किया है और मैं इसे अपने यूआरएल का उपयोग करके संदर्भित करता हूं, तो मुझे byte[] मिलता है। मेरा सवाल है, मैं byte[] को WPF में Image तत्व में कैसे लोड करूं? धन्यवाद।रनटाइम

नोट: यह मुझसे पूछे गए प्रश्न के पूरक है: Generate Image at Runtime। मुझे काम करने के लिए यह दृष्टिकोण नहीं मिल रहा है, इसलिए मैं एक अलग दृष्टिकोण की कोशिश कर रहा हूं।

+0

कृपया ध्यान दें, मैं एक बाइट [] को एक सिस्टम में लोड करना चाहता हूं। Windows.Controls.Image इंस्टेंस। एक सिस्टम नहीं। ड्रॉइंग। इमेज इंस्टेंस जैसा कि हर किसी ने कृपया ध्यान दिया है। – user70192

उत्तर

5

आप BitmapImage का उपयोग कर सकते हैं, और बाइनरी डेटा वाले एक स्ट्रीम में StreamSource सेट कर सकते हैं।

MemoryStream stream = new MemoryStream(bytes); 
21

के रूप में नीचे MemoryStream से एक BitmapImage बनाएँ:

MemoryStream byteStream = new MemoryStream(bytes); 
BitmapImage image = new BitmapImage(); 
image.BeginInit(); 
image.StreamSource = byteStream; 
image.EndInit(); 

और XAML में आप एक Image नियंत्रण बना सकते हैं और सेट कर सकते हैं इसके बाद के संस्करण imageSource संपत्ति के रूप में।

+0

क्या यह केवल WinForms के लिए काम नहीं करेगा? – configurator

+0

उत्तर अद्यतन किया गया –

1

.NET फ्रेमवर्क में 4,0

using System.Drawing; 
using System.Web; 

private Image GetImageFile(HttpPostedFileBase postedFile) 
{ 
    if (postedFile == null) return null; 
    return Image.FromStream(postedFile.InputStream); 
} 
1

एक तरीका यह है कि मैं पता लगा इसे कैसे करना इतना है कि यह दोनों तेज था: यदि आप एक byte[] से एक stream बनाना चाहते हैं, एक MemoryStream का उपयोग और धागा सुरक्षित पीछा कर रहा था:

var imgBytes = value as byte[]; 
if (imgBytes == null) 
    return null; 
using (var stream = new MemoryStream(imgBytes)) 
    return BitmapFrame.Create(stream,BitmapCreateOptions.None, BitmapCacheOption.OnLoad); 

मैं डीबी से Varbinary के रूप में छवियों को चलाने के बाद मेरी WPF आवेदन के लिए एक कनवर्टर में फेंक दिया है।