10

I have an image stored in a Bitmap object that I'd like to stick into an OpenXML document. I've tried using a MemoryStream as an intermediate step as follows:

ImagePart part = container.AddNewPart<ImagePart>("image/jpeg", imageId);
using (MemoryStream ms = new MemoryStream())
{
    bitmap.Save(ms, ImageFormat.Jpeg);
    part.FeedData(ms);
}

but that always results in empty files in the media folder and PowerPoint displaying an error instead of the images. I know that the MemoryStream has the image data correctly as I've written it out to a file without issue. When I try to load an image from a FileStream it works just fine.

How can I get this Bitmap into an OpenXML document?

Matthew Jacobs
  • 4,344
  • 1
  • 20
  • 20

1 Answers1

20

I was almost there, I just needed to reset the MemoryStream's position to the beginning after saving the Bitmap to it.

ms.Position = 0;

That line should be added between the Save and FeedData calls.

Matthew Jacobs
  • 4,344
  • 1
  • 20
  • 20