Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I save a BitmapImage from memory into a file in WPF C#?

I can't find anything over this and need some help. I have loaded a bunch of images into memory as BitmapImage types, so that I can delete the temp directory that they were stored in. I have successfully done this part. Now I need to save the images to a different temp location and I can't figure out how to do this The images are contained in a:

Dictionary<string, BitmapImage>

The string is the filename. How do I save this collection to the new temp location? Thanks for any help!

like image 747
Chris Avatar asked Mar 04 '16 19:03

Chris


People also ask

What is bitmap image in WPF?

BitmapImage Class (System.Windows.Media.Imaging)Provides a specialized BitmapSource that is optimized for loading images using Extensible Application Markup Language (XAML).


1 Answers

You need to use an encoder to save the image. The following will take the image and save it:

BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(image));

using (var fileStream = new System.IO.FileStream(filePath, System.IO.FileMode.Create))
{
    encoder.Save(fileStream);
}

I usually will write this into an extension method since it's a pretty common function for image processing/manipulating applications, such as:

public static void Save(this BitmapImage image, string filePath)
{
    BitmapEncoder encoder = new PngBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(image));

    using (var fileStream = new System.IO.FileStream(filePath, System.IO.FileMode.Create))
    {
        encoder.Save(fileStream);
    }
}

This way you can just call it from the instances of the BitmapImage objects.

like image 141
Jay T Avatar answered Sep 17 '22 11:09

Jay T