2010-03-15 14 views
16
public Image Base64ToImage(string base64String) 
    { 
     // Convert Base64 String to byte[] 
     byte[] imageBytes = Convert.FromBase64String(base64String); 
     MemoryStream ms = new MemoryStream(imageBytes, 0, 
      imageBytes.Length); 

     // Convert byte[] to Image 
     ms.Write(imageBytes, 0, imageBytes.Length); 
     System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true); 
     return image; 
    } 

मैं बाइट [] को छवि में परिवर्तित करना चाहता हूं, हालांकि System.Drawing.Image Silverlight में समर्थित नहीं है। कोई विकल्प?सिल्वरलाइट 4.0: बाइट [] से छवि को कैसे परिवर्तित करें?

उत्तर

22

आपको एक छवि संसाधन बनाने और छवि नियंत्रण में असाइन करने या पृष्ठभूमि पर सेट करने के लिए छविब्रश का उपयोग करने की आवश्यकता है। बिटमैप इमेज System.Windows.Media.Imaging नामस्थान में स्थित है।

 byte[] imageBytes = Convert.FromBase64String(base64String); 
     using (MemoryStream ms = new MemoryStream(imageBytes, 0, 
      imageBytes.Length)) 
     { 
      BitmapImage im = new BitmapImage(); 
      im.SetSource(ms); 
      this.imageControl.Source = im; 
     } 

या ImageBrush के लिए

 byte[] imageBytes = Convert.FromBase64String(base64String); 
     using (MemoryStream ms = new MemoryStream(imageBytes, 0, 
      imageBytes.Length)) 
     { 
      BitmapImage im = new BitmapImage(); 
      im.SetSource(ms); 
      imageBrush.ImageSource = im; 
      this.BoxBorder.Background = imageBrush; 
     } 
+1

तुम क्यों विधि लिखें का उपयोग कर MemoryStream को imageBytes लिखने के लिए की जरूरत है? क्या वे सीटीआर से नहीं हैं? Im.SetSource (स्ट्रीम) im.SetSource (एमएस) नहीं होना चाहिए? – DaveB

+0

ओह हाँ, मैंने बस उस मूल कोड का पुन: उपयोग किया जो उसके पास सुविधा के लिए ऊपर था, लेकिन अब इसे देख रहा है - यह थोड़ा सा है। – nyxtom

0

एक अन्य तरीका:

public static BitmapImage ConvertStreamToImage(Stream stream) 
    { 
     BitmapImage _resultImage = new BitmapImage(); 

     _resultImage.SetSource(stream); 

     return _resultImage; 
    } 

जो इन नाम रिक्त स्थान का उपयोग करता है: using System.IO; using System.Windows.Media.Imaging;

3

इस कोड को बाइट के लिए छवि परिवर्तित कर सकते हैं []

BitmapImage imageSource = new BitmapImage(); 
Stream stream = openFileDialog1.File.OpenRead(); 
BinaryReader binaryReader = new BinaryReader(stream); 
currentImageInBytes = new byte[0]; 

currentImageInBytes = binaryReader.ReadBytes((int)stream.Length); 
stream.Position = 0; 
imageSource.SetSource(stream); 

और इस कोड को परिवर्तित कर सकते हैं बाइट [] छवि के लिए

public void Base64ToImage(byte[] imageBytes) 
{ 

    using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length)) 
    { 
     BitmapImage im = new BitmapImage(); 
     im.SetSource(ms); 
     img.Source = im; 
    } 
} 
संबंधित मुद्दे