Har*_*vet 6 image-conversion microsoft-powerpoint
我有一个包含许多嵌入图像的大型 PowerPoint 文件,其中一些是 JPEG 和一些 PNG。为了使文件尽可能小,我希望将所有 PNG 图像转换为 JPEG。
这可以通过手动保存每个图像、转换它并将其重新添加到演示文稿中来完成,但这需要很多时间。是否有在 MS Powerpoint (2016) 中进行批量转换的功能,或者更有效地实现这一目标的其他方法?
补充:我意识到可以在 PowerPoint 中压缩图像,我已经这样做了。但这并不能像用 JPEG 替换 PNG 那样减少文件大小,因为 PNG 是大得多的文件——因此是问题。
您可以使用 PowerShell!由于现代 Office 文档实际上是主要包含 XML 文件的 ZIP 文件,因此我们可以相当轻松地操作它们,而无需依赖任何 Office 组件。我为你写了这个脚本:
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true)][string]$File,
[Parameter()][int]$Quality = 50
)
Add-Type -AssemblyName System.IO.Compression
Add-Type -AssemblyName System.Drawing
$fs = New-Object System.IO.FileStream (Resolve-Path $File), 'Open'
$zip = New-Object System.IO.Compression.ZipArchive $fs, 'Update'
$zip.Entries | ? {$_.FullName -like 'ppt/media/*.png'} | % {
$s = $_.Open()
$img = [System.Drawing.Image]::FromStream($s)
$s.Position = 0
$codec = [System.Drawing.Imaging.ImageCodecInfo]::GetImageDecoders() | ? {$_.FormatId -eq [System.Drawing.Imaging.ImageFormat]::Jpeg.Guid}
$qualityprop = [System.Drawing.Imaging.Encoder]::Quality
$encodeparams = New-Object System.Drawing.Imaging.EncoderParameters 1
$encodeparams.Param[0] = New-Object System.Drawing.Imaging.EncoderParameter $qualityprop, $Quality
$img.Save($s, $codec, $encodeparams)
$s.SetLength($s.Position)
$s.Close()
}
$zip.Dispose()
Run Code Online (Sandbox Code Playgroud)
它将给定的 PPTX 文件作为 ZIP 存档打开,找到每个嵌入的 PNG 图像,并将该图像转换为 JPG。它不会更新存档中文件的扩展名,但 PowerPoint 似乎并不关心(在 Windows 10 上的 PowerPoint 2016 上测试)。如果您希望它尝试使用所有图像类型(我尚未测试其他格式),请更改以下行:
$zip.Entries | ? {$_.FullName -like 'ppt/media/*.png'} | % {
Run Code Online (Sandbox Code Playgroud)
对此:
$zip.Entries | ? {$_.FullName.StartsWith('ppt/media/')} | % {
Run Code Online (Sandbox Code Playgroud)
将脚本另存为.ps1文件,例如pptxjpg.ps1. 如果您还没有,请按照PowerShell 标记 wiki的启用脚本部分中的说明进行操作。然后,您可以从 PowerShell 提示符运行它,如下所示:
.\pptxjpg.ps1 C:\path\to\presentation.pptx
Run Code Online (Sandbox Code Playgroud)
它需要一个可选参数来指定 JPG 质量,默认为 50。如果您想节省更多空间,您可以指定一个较低的值,如下所示:
.\pptxjpg.ps1 C:\path\to\presentation.pptx -Quality 20
Run Code Online (Sandbox Code Playgroud)
当我测试后一个命令时,它将包含高分辨率屏幕截图和中等大小图表的演示文稿的大小从 982 KB 减少到 253 KB。
如果您想要最小化 pptx 文件,无论设置图像格式如何,请选择一张图片,然后从功能区菜单中选择Format并找到按钮Compress Pictures。取消勾选Apply only to this picture即可应用到所有图片。
可选:将单选按钮设置为E-mail 96 ppi。这将降低分辨率,从而创建更轻的 pptx。勾选Delete cropped areas of pictures以丢弃使用“裁剪”按钮隐藏的未使用部分。