Запись растрового изображения в OpenXML ImagePart через MemoryStream - PullRequest
5 голосов
/ 20 июля 2011

У меня есть изображение, хранящееся в растровом объекте, которое я хотел бы вставить в документ OpenXML.Я попытался использовать MemoryStream в качестве промежуточного шага следующим образом:

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

, но это всегда приводит к пустым файлам в папке мультимедиа, и PowerPoint отображает ошибку вместо изображений.Я знаю, что MemoryStream правильно хранит данные изображения, так как я записал их в файл без проблем.Когда я пытаюсь загрузить изображение из FileStream, оно работает просто отлично.

Как я могу получить это растровое изображение в документ OpenXML?

1 Ответ

12 голосов
/ 21 июля 2011

Я был почти там, мне просто нужно было сбросить позицию MemoryStream в начало после сохранения растрового изображения на нем.

ms.Position = 0;

Эта строка должна быть добавлена ​​между вызовами Save и FeedData.

...