Silverlight Tip of the Day #92 – How to Load Images from a Stream
In Tip of the Day #86 I showed you how to load external images not included in the project such as images on the web. In this Tip I will be showing you had to load images from the client’s machine through a file stream.
Due to obvious security reasons Silverlight cannot directly load files from a client box. However, in response to an event like a button Silverlight can load files through the OpenFileDialog where the client gets to choose what file to load.
The following sample shows you how to load a PNG file once a use clicks on a button. In the code below, “MyImage” is an Image control that I declared in my XAML. BitmapImage can be found in System.Windows.Media.Imaging.
private void Button_Click_Load_Image(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "PNG Files (*.png;*.png)|*.png;*.png | All Files (*.*)|*.*";
ofd.FilterIndex = 1;
if (true == ofd.ShowDialog())
{
System.IO.Stream stream = ofd.File.OpenRead();
BitmapImage bi = new BitmapImage();
bi.SetSource(stream);
MyImage.Source = bi;
stream.Close();
}
}
Thank you,
--Mike Snow
Subscribe in a reader