Reputation: 363
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!
Upvotes: 17
Views: 27477
Reputation: 863
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.
Upvotes: 47