将PowerPoint中的内部图像转换为一种格式

Posted

技术标签:

【中文标题】将PowerPoint中的内部图像转换为一种格式【英文标题】:Convert internal images in powerpoint to one format 【发布时间】:2012-07-25 20:29:52 【问题描述】:

我看到了很多关于如何将整个幻灯片从 powerpoint 演示文稿导出为图像的提示和技巧,但这不是我的任务。 相反,我正在尝试转换各个幻灯片中的所有“非开放格式”图像类型,并将它们(就地)替换为友好的等价物。 这主要是由于 Google Docs 不了解 .emf 和 .wmf 格式(为什么?那么开源软件实际上确实支持它?)并且因为手动将图形导出为图像文件并将其重新插入到演示文稿中是一个非常复杂的过程,我想知道是否有人找到了这样做的好方法。

因此,总结:将 powerpoint 演示文稿中的 emf 和 wmf 文件升级为 png 或 jpg 格式。 作为附注,我可以将这些文件作为 zip 文件打开,并查看有问题的文件只是在 \ppt\media 中,但只需替换文件会导致 Powerpoint 只是删除以前引用的图像文件并抱怨可能是错了。

【问题讨论】:

.wmf = Windows 元文件。它有点像 PDF,因为它是定义图像的脚本,而不仅仅是像素/颜色列表。 【参考方案1】:

对于每张“不友好”的图片,将其复制并粘贴为 PNG(或 JPG 或任何您想要的格式),然后删除原始图片。

简单的例子:

Sub ConvertShapeToPNG()
    Dim oSh As Shape
    Set oSh = ActiveWindow.Selection.ShapeRange(1)
    oSh.Copy
    ActiveWindow.Selection.SlideRange.Shapes.PasteSpecial ppPastePNG
    oSh.Delete
End Sub

在实践中,假设您要集体执行此操作而不是一次手动执行一个操作,您需要一种方法来确定图片是否“友好”(以及实际上是否是图片)。

您可以首先检查 oSh.Type = msoPicture(或其他几种可能的类型之一)。如果是图片,它已经是光栅格式还是“不友好”的格式?尝试取消组合形状的副本。如果尝试抛出错误,则它已经是光栅;如果没有错误,删除生成的未分组形状/shaperange 和原始形状的副本。

复制/粘贴为 PNG/etc 后,您需要选取原始形状的 x/y 位置,将其应用于新的 PNG 形状,并可能将新形状移动到原始形状的 z-顺序。

【讨论】:

这听起来可行。实际上,唯一需要替换的对象似乎是 emf 或 wmf 类型。由于我现在在机器之间,我无法测试代码来弄清楚为什么这些类型最终会根据它们的对象属性。 理想情况下,应该保留有关图像的所有内容(可能不是透明度,我听说它会导致问题)。所以,添加一些部分来收集相关的位置和大小数据可能会完成这个脚本,以及一种轻松循环整个演示文稿的方法...... 我遇到了类似的问题。粘贴到 Powerpoint 中的图像是 TIFF,使 .pptx 文件的大小约为应有大小的 10 倍。我使用了这段代码,它有效。唯一的问题是它不会将图像粘贴回同一位置,因此您必须重新定位图像。我想这可以通过在粘贴操作之前存储图像坐标然后将新粘贴的新 PNG 移动到这些坐标来解决。

以上是关于将PowerPoint中的内部图像转换为一种格式的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python将不同格式的日期转换为一种格式[重复]

将 URL 转换为一种标准格式

将 URL 转换为一种标准格式

将 GPS 纬度/经度从不同格式转换为一种格式(在 PHP 中)

使用 Python 将图表从 Excel 转换为 PowerPoint

Excel 到 PowerPoint PasteSpecial 并保持源格式