【问题标题】:Extract image from Docx从 Docx 中提取图像
【发布时间】:2013-09-04 12:22:11
【问题描述】:

我正在尝试从 docx 文件中导出图像。 如何将来自 Shape 对象的 EncodedPackage 转换为图像?

我的代码示例:

DocumentFormat.OpenXml.Vml.Shape shape = imageElement.Descendants<DocumentFormat.OpenXml.Vml.Shape>().FirstOrDefault();
byte[] bytes = System.Convert.FromBase64String(shape.EncodedPackage.Value.Replace("\n", ""));
System.Drawing.Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
   image = System.Drawing.Image.FromStream(ms);
}
image.Save(fileName);

【问题讨论】:

  • 为什么要从Vml.Shape 对象中提取图像?图片内容应在abImagePart对象中。
  • 因为我认为图像包含在属性gfxdata(EncodedPackage属性)中

标签: c# openxml docx


【解决方案1】:

您可以从ImagePart 获取图像。试试这个:

var imageParts = doc.MainDocumentPart.ImageParts;
foreach (var imagePart in imageParts)
{
      var uri = imagePart.Uri;
      var filename = uri.ToString().Split('/').Last();
      var stream = doc.Package.GetPart(uri).GetStream();

       Bitmap b = new Bitmap(stream);
       b.Save(@"C:\Extracted_Images\" + filename);
}

【讨论】:

  • 对,所以它保存 ImagePart 对象中的图像,但如果图像存储为 EncodedPackage?如何将其转换为图像?谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2020-05-28
  • 2020-11-05
相关资源
最近更新 更多