Wie konvertiert man mehrere eingebettete PNGs in Powerpoint-Dateien in JPEGs?

1521
Harry Vervet

Ich habe eine große PowerPoint-Datei mit vielen eingebetteten Bildern, von denen einige JPEGs und einige PNGs sind. Um die Datei so klein wie möglich zu machen, möchte ich, dass alle PNG-Bilder in JPEGs konvertiert werden.

Dazu können Sie jedes Bild manuell speichern, konvertieren und erneut zur Präsentation hinzufügen. Dies dauert jedoch viel Zeit. Gibt es Funktionen zur Durchführung einer Stapelkonvertierung in MS Powerpoint (2016) oder eine andere Methode, um dies effizienter zu erreichen?


Hinzugefügt: Ich erkenne, dass Bilder in PowerPoint komprimiert werden können, und das habe ich bereits getan. Das reduziert die Dateigröße jedoch nicht so sehr wie das Ersetzen der PNGs durch JPEGs, da es sich bei den PNGs um wesentlich größere Dateien handelt - daher die Frage.

6

2 Antworten auf die Frage

4
Ben N

Sie können PowerShell verwenden! Da moderne Office-Dokumente eigentlich ZIP-Dateien sind, die hauptsächlich XML-Dateien enthalten, können wir sie ziemlich einfach bearbeiten, ohne auf Office-Komponenten angewiesen zu sein. Ich habe dieses Skript für Sie geschrieben:

[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() 

Es öffnet die angegebene PPTX-Datei als ZIP-Archiv, findet jedes eingebettete PNG-Bild und konvertiert dieses Bild in ein JPG. Die Erweiterung der Datei innerhalb des Archivs wird nicht aktualisiert. PowerPoint scheint dies jedoch nicht zu interessieren (getestet unter PowerPoint 2016 unter Windows 10). Wenn Sie versuchen möchten, mit allen Bildtypen zu arbeiten (ich habe keine anderen Formate getestet), ändern Sie diese Zeile:

$zip.Entries | ? {$_.FullName -like 'ppt/media/*.png'} | % { 

Zu diesem:

$zip.Entries | ? {$_.FullName.StartsWith('ppt/media/')} | % { 

Speichern Sie das Skript als .ps1Datei, z pptxjpg.ps1. Wenn Sie dies noch nicht getan haben, befolgen Sie die Anweisungen im Abschnitt Aktivieren von Skripts des PowerShell-Tag-Wikis . Sie können es dann über eine PowerShell-Eingabeaufforderung wie folgt ausführen:

.\pptxjpg.ps1 C:\path\to\presentation.pptx 

Es ist ein optionaler Parameter erforderlich, der die JPG-Qualität angibt. Der Standardwert ist 50. Wenn Sie noch mehr Speicherplatz sparen möchten, können Sie einen niedrigeren Wert angeben, z.

.\pptxjpg.ps1 C:\path\to\presentation.pptx -Quality 20 

Beim Testen dieses letzteren Befehls wurde die Größe einer Präsentation mit einem hochauflösenden Screenshot und einem Diagramm mittlerer Größe von 982 KB auf 253 KB reduziert.

2
Sanny

Wenn Sie die pptx-Datei minimieren möchten, wählen Sie ein Bild aus, und wählen Sie im Ribbon-Menü Formatdie Schaltfläche aus Compress Pictures. Deaktivieren Sie das Kontrollkästchen Apply only to this picture, um alle Bilder anzuwenden.

Optional: Setzen Sie das Optionsfeld auf E-mail 96 ppi. Dadurch wird die Auflösung herabgestuft und ein hellerer pptx erzeugt. Markieren Sie Delete cropped areas of picturesdas Kontrollkästchen, um nicht verwendete Teile mit der Schaltfläche "Ausschneiden" auszublenden.

Ich weiß, dass Sie die Bilder komprimieren können, aber das frage ich nicht. Darüber hinaus scheint die Verwendung dieser Methode nur die Bilder eines gegebenen Dateityps zu komprimieren (dh es scheint nur die JPEGs zu komprimieren, sofern Sie nicht den Vorgang auf einer PNG-Datei wiederholen). Die PNG-Bilder sind immer noch viel größer als die JPEGs, daher möchte ich alle PNGs durch JPEG-Versionen ersetzen, wie in der Frage angegeben. Harry Vervet vor 8 Jahren 2
Erstens komprimiert diese Methode alle Bilder, nicht wie Sie denken. Hier (http://i.imgur.com/GF9S9FA.png) Ich habe die Komprimierung durch Auswahl eines JPEG-Bildes durchgeführt, der Prozess ging auch mit dem PNG-Bild einher. Selbst wenn es Ihnen gelingt, PNG in JPEG umzuwandeln, wird der Link abgebrochen, der das erneute Einfügen der neu konvertierten Bilder erfordert. Denken Sie daran, dass PNG (verlustfrei) immer viel größer als JPEG (verlustbehaftete Komprimierung) ist. Wenn diese Antwort Sie nicht zufriedenstellt, lösche ich sie. Sanny vor 8 Jahren 0
Diese Methode komprimiert das Bild, indem die Auflösung herabgestuft wird und verborgene Bereiche abgeschnitten werden. Das Bildformat ist reserviert. Das ursprüngliche Format bleibt also erhalten. Yvon vor 7 Jahren 2