Alle Bilder per Makro komprimieren

Moderator: ModerationP

Alle Bilder per Makro komprimieren

Beitragvon J_B » 17. Jun 2022, 09:20

PowerPoint 2016 (2003 auch vorhanden)

Ich habe gut 30 Präsentationen zwischen ca. 100 MB und 950 MB, bei denen ich die Bilder komprimieren will.
Über "Datei / Speichern unter / Tools / Bilder komprimieren" geht das ja rel. einfach, dauert nur schon bei den kleineren Dateien gefühlt "ewig" und ich möchte nicht STUNDEN damit verbringen (zumal ich in zwei Auflösungen speichern will.
Leider gibt's ja in PowerPoint keine Möglichkeit Makros aufzuzeichnen und die Optionen für "Bilder komprimieren" habe ich leider im WWW auch nicht gefunden.
Ein paar Zeilen Code habe ich schon mal "zusammengestöpselt":

Code: Alles auswählen
Sub PPTBilder_komprimieren01()
    '#komprimiert alle Bilder in der Slideshow
    Dim DatNam$, PPI$
    PPI = "096"
    DatNam = ActivePresentation.FullName
    DatNam = Left(DatNam, InStr(DatNam, ".") - 1) & "_" & PPI & ".PPTM"
    ActivePresentation.SaveAs DatNam, ppSaveAsDefault
   
End Sub


Noch eine Schleife für alle Dateien "außen 'rum" ...
Nur die Option, um die Bilder vor dem Speichern zu komprimieren habe ich nicht gefunden ...
Kann mir da bitte jemand auf die Sprünge helfen?!

BTW:
Die Dateigrößen bei verschiedener Bildkompression:
Original 100%
PPI / %
330 / 89%
220 / 43%
150 / 23%
096 / 11%
Selbst die 96 PPI dürften bei einem "Standard-Beamer" (also kein HD oder gar 4K) ausreichen.
Gruß

J_B
J_B
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 69
Registriert: 06. Feb 2007, 13:51

Re: Alle Bilder per Makro komprimieren

Beitragvon J_B » 01. Jul 2022, 13:33

30 Zugriffe - und keiner hat 'ne Idee?

Vorschläge wo ich sonst nach einer Lösung suchen könnte?
Gruß

J_B
J_B
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 69
Registriert: 06. Feb 2007, 13:51

Re: Alle Bilder per Makro komprimieren

Beitragvon G.O.Tuhls » 01. Jul 2022, 16:20

Egal ob Du das manuell oder per Makro machst, ändert es nichts daran, dass PP diese Bildermenge bewältigen muss. Oder sind es gar nicht so viele, sondern nur falsch importierte?
Also Ärmel aufkrempeln und ran!

Gruß
G. O.
Press any thumb to continue. :D
Benutzeravatar
G.O.Tuhls
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8331
Registriert: 26. Mär 2010, 14:19
Wohnort: Berlin

Re: Alle Bilder per Makro komprimieren

Beitragvon J_B » 02. Jul 2022, 17:46

Es ist schon ein Unterschied, ob PowerPoint ein Bild von 1 MB o. 20 MB laden muss und es ist auch ein Unterschied, ob man einmal (nämlich beim Komprimieren der Bilder, bzw. der PPT) länger warten muss oder bei jedem Vortrag.

Und es ist auch ein DEUTLICHER Unterschied, ob ich das bei allen Dateien "zu Fuß" machen oder nur ein Makro starten muss und während das läuft etwas anderes erledigen kann.

Natürlich sind die Bilder "falsch importierte", weil viel zu große Bilder importiert wurden.
Die hätte man vor dem Erstellen der jeweiligen Präsentation schon verkleinern müssen (max. 4K, falls wirklich mal jemand einen so hochauflösenden Beamer verwendet, aber selbst dann werden die wenigsten Zuschauer (zumindest bei normalem Betrachtungsabstand) kaum einen Unterschied zwischen zwischen 1,5 Megapixel (1024x1536), 2 Megapixel ("Full HD" 1920 x 1080) und 8 Megapixel ("4K" 3840 x 2160) erkennen - und selbst wenn, dürfte er in den wenigsten Fällen für den Transport der im Bild enthaltenen Information wichtig sein.

"Also Ärmel aufkrempeln und ran!"
Dass ich da nicht von selbst drauf gekommen bin ...

Entschuldige bitte, dass ich so ein Fauler Hund bin und das automatisieren will!
Aber ich kann da eigentlich nichts dafür! Schuld ist Microsoft! Die erziehen einen ja mit diesem VBA geradezu zu einem Faulen Hund.

Ich erstelle auch nicht jedes Jahr für ca. 800 Einladungen (NICHT gleichmäßig über das Jahr verteilt, sondern "in der Saison" (knapp 8 Wochen) die individuellen PDF-Dateien "zu Fuß" und ein weiteres Makro verschickt die dann via Outlook.
DU würdest auch da wahrscheinlich "die Ärmel aufkrempeln" ...
Gruß

J_B
J_B
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 69
Registriert: 06. Feb 2007, 13:51

Re: Alle Bilder per Makro komprimieren

Beitragvon G.O.Tuhls » 02. Jul 2022, 21:46

Wir reden offenbar aneinander vorbei.
Um zu komprimieren, musst Du eh jede Datei öffnen, egal ob darin ein Makro zum Komprimieren verwendet wird oder Du manuell per "Alle komprimieren" den Anstoß gibst. Beides dauert auch gleich lange.
"Falsch importiert" hat vorrangig nicht mit der Bildgröße zu tun, sondern mit dem Importweg. Via Zwischenablage entstehen
Monsterdateien, weil PP dann alles als PNG speichert - fatal bei Fotos.
Wie Du richtig erkannt hast, wäre vorheriges Anpassen sinnvoll, das kannst Du nachholen, indem Du die Bilder aus dem Ordner Media des ZIP extrahierdt, im Batch eines Grafikprogs optimierst und zurückspeicherst.
Was Du ansonsten für Vorbehalte hast bzgl. Öffnen und so, verstehe ich nicht.

Gruß
G. O.
Press any thumb to continue. :D
Benutzeravatar
G.O.Tuhls
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8331
Registriert: 26. Mär 2010, 14:19
Wohnort: Berlin

Re: Alle Bilder per Makro komprimieren

Beitragvon J_B » 04. Jul 2022, 06:48

Natürlich muss zum komprimieren der Bilder jede PPT geöffnet, die Bilder komprimiert und die PPT danach wieder gespeichert werden.
Es ist aber ein Unterschied, ob ich das "zu Fuß" für jede Datei machen muss (und dabei die meiste Zeit warte, bis der Vorgang gelaufen ist) oder ob ein Makro (in einer Schleife) jede Datei öffnet, Bilder komprimiert und die Datei dann speichert.
Dabei kann ich zusehen oder etwas ganz anderes machen.

J_B hat geschrieben:Was Du ansonsten für Vorbehalte hast bzgl. Öffnen und so, verstehe ich nicht.

Schon das Öffnen so riesiger Dateien "dauert", der Kompressionsvorgang (in PowerPoint) braucht auch lange.
Zu Fuß dauert das Stunden, die zum allergrößten Teil aus "warten" bestehen.

G.O.Tuhls hat geschrieben:"Falsch importiert" hat vorrangig nicht mit der Bildgröße zu tun, sondern mit dem Importweg. Via Zwischenablage entstehen

Da werden beide Faktoren hineinspielen.
Wie Du ganz richtig geschrieben hast werden die PPT-Dateien bei einfügen via Zwischenablage größer (selbst bei rel. kleinen Bild-Dateien), als via "Einfügen, Grafik-Datei", ein "etliche" MB großes JPG wird aber auch da zu einer größeren Datei führen, als ein "wenige 100 KB" großes.

G.O.Tuhls hat geschrieben:..., das kannst Du nachholen, indem Du die Bilder aus dem Ordner Media des ZIP extrahierdt, im Batch eines Grafikprogs optimierst und zurückspeicherst.

Das muss ich mir mal ansehen!
Du meinst die in einer PPT enthaltenen Bilder stehen in einem eigenen Ordner?!
Gilt das immer oder nur, wenn die Bilder als Link eingefügt sind?
Gruß

J_B
J_B
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 69
Registriert: 06. Feb 2007, 13:51

Re: Alle Bilder per Makro komprimieren

Beitragvon DerHoepp » 04. Jul 2022, 07:40

Hallo J_B,

pptx- und pptm-Dateien sind letztlich auch nur Zip-Dateien, bei denen die Dateiendung geändert wurde. Änderst du die Dateiendung wieder in Zip, kannst du die Struktur der Datei als Ordner sehen. Darin enthalten ist auch ein Media-Ordner, der alle eingebetteten Dateien enthält (wenn auch mit anderen Dateinamen als ursprünglich). Diese Dateien kannst du rauskopieren, verkleinern und wieder hineinkopieren, bevor du den Dateinamen wieder auf .pptx enden lässt. Das ließe sich im Zweifel natürlich auch automatisieren. Das würde allerdings nicht das Problem lösen, dass Bilder, die du zugeschnitten hast noch vollständig vorhanden sind.

Leider scheint Microsoft für die Bildbearbeitungsfunktionen keine VBA-Möglichkeiten eingebaut zu haben.

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10441
Registriert: 14. Mai 2013, 11:08

Re: Alle Bilder per Makro komprimieren

Beitragvon G.O.Tuhls » 04. Jul 2022, 11:32

Es ist aber ein Unterschied, ob ich das "zu Fuß" für jede Datei machen muss (und dabei die meiste Zeit warte, bis der Vorgang gelaufen ist) oder ob ein Makro (in einer Schleife) jede Datei öffnet, Bilder komprimiert und die Datei dann speichert.
Dabei kann ich zusehen oder etwas ganz anderes machen.

Um ein Makro zu starten, muss die Datei aber erst mal offen sein.
Den Aufwand hast Du 1× und nie wieder, und dann kommt es auch nicht mehr dazu:
ist schon ein Unterschied, ob PowerPoint ein Bild von 1 MB o. 20 MB laden muss und es ist auch ein Unterschied, ob man einmal (nämlich beim Komprimieren der Bilder, bzw. der PPT) länger warten muss oder bei jedem Vortrag


Gruß
G. O.
Press any thumb to continue. :D
Benutzeravatar
G.O.Tuhls
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8331
Registriert: 26. Mär 2010, 14:19
Wohnort: Berlin

Re: Alle Bilder per Makro komprimieren

Beitragvon J_B » 05. Jul 2022, 07:47

G.O.Tuhls hat geschrieben:Um ein Makro zu starten, muss die Datei aber erst mal offen sein.
Um ein Makro zu starten, muss EINE PowerPoint-Datei offen sein, das muss NICHT die zu komprimierende sein.
Ich schrieb ja "Noch eine Schleife für alle Dateien 'außen 'rum' ..." ...

G.O.Tuhls hat geschrieben:Den Aufwand hast Du 1× und nie wieder,

Schon für "1x" kann sich der "Aufwand" das via Makro zu programmieren lohnen.
Wenn PPT einen Makro-Rekorder hätte, wie Word u. Excel - man also den Befehl für "Bilder komprimieren" u. "Datei speichern unter ..." einfach aufzeichnen könnte, dann wäre das sehr schnell programmiert.

G.O.Tuhls hat geschrieben: und nie wieder

Auch das stimmt nicht, denn spätestens bei der nächsten Version dieser Präsentationen wird das wieder fällig.

Das sind gekaufte Ausbildungsunterlagen, ich kann also nicht sagen "Mach' das gefälligst kleiner!"
Es ist "wie überall": Da sitzen Leute, die sich um solche Dinge überhaupt keine Gedanken machen, Hauptsache es sieht "chic" aus.
Wie viele erstellen x Dateien mit m.o.w. demselben Inhalt, statt 1x einen Serienbrief zu erstellen?!
Zuletzt geändert von J_B am 05. Jul 2022, 08:00, insgesamt 2-mal geändert.
Gruß

J_B
J_B
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 69
Registriert: 06. Feb 2007, 13:51

Re: Alle Bilder per Makro komprimieren

Beitragvon J_B » 05. Jul 2022, 07:58

G.O.Tuhls hat geschrieben:"Falsch importiert" hat vorrangig nicht mit der Bildgröße zu tun, sondern mit dem Importweg. Via Zwischenablage entstehen Monsterdateien, weil PP dann alles als PNG speichert - fatal bei Fotos.
Wie Du richtig erkannt hast, wäre vorheriges Anpassen sinnvoll, das kannst Du nachholen, indem Du die Bilder aus dem Ordner Media des ZIP extrahierdt, im Batch eines Grafikprogs optimierst und zurückspeicherst.

DerHoepp hat geschrieben:pptx- und pptm-Dateien sind letztlich auch nur Zip-Dateien, bei denen die Dateiendung geändert wurde. Änderst du die Dateiendung wieder in Zip, kannst du die Struktur der Datei als Ordner sehen. Darin enthalten ist auch ein Media-Ordner, der alle eingebetteten Dateien enthält (wenn auch mit anderen Dateinamen als ursprünglich). Diese Dateien kannst du rauskopieren, verkleinern und wieder hineinkopieren, bevor du den Dateinamen wieder auf .pptx enden lässt. Das ließe sich im Zweifel natürlich auch automatisieren.

Das waren sehr gute Hinweise. - Danke dafür!

Die enthaltenen Bilder (wenige Fotos, viele S/W-Strichzeichnungen) sind tatsächlich PNG-Dateien, von sage und schreibe 43 Megapixel Größe.
Mit IrfanView im Stapelbetrieb verkleinert ist die Bildqualität deutlich besser, als von PPT auf 150 o. gar 96 ppi komprimiert und die Dateigröße ist ähnlich, wie bei 150 ppi.

Als JPG wäre es nochmal deutlich kleiner, dann müsste ich aber jeder PPT beibringen, dass das jetzt JPGs sind und keine PNGs mehr.
Mal sehen, ob ich das noch irgendwo in der Zip-Datei finde ...
Gruß

J_B
J_B
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 69
Registriert: 06. Feb 2007, 13:51

Re: Alle Bilder per Makro komprimieren

Beitragvon DerHoepp » 05. Jul 2022, 09:45

Moin,

schön, dass du schon einen Etappensieg erreicht hast, ich möchte nur kurz noch einen Kommentar abgeben:
Wenn PPT einen Makro-Rekorder hätte, wie Word u. Excel - man also den Befehl für "Bilder komprimieren" u. "Datei speichern unter ..." einfach aufzeichnen könnte, dann wäre das sehr schnell programmiert.

Der Makrorekorder würde hier nichts nützen, weil es eben keine eigenständige offengelegte Methode im Objektmodell gibt, mit der du das Komprimieren anstoßen könntest. Einen zusätzlichen Parameter der .SaveAs oder .SaveCopyAs2-Methode gibt es ebenfalls nicht. Der Makrorekorder würde da auch nur folgendes Aufzeichnen:
Code: Alles auswählen
Sub Makro1()
   ActivePresentation.SaveAs FileName:= "DeinePresentation.pptx", FileFormat:=ppSaveAsOpenDocumentPresentation, EmbedFonts:=msoTriStateMixed
End Sub


Besser als der Makrorekorder ist meiner Ansicht nach in VBA übrigens immer der Objektkatalog, den du mit F2 im VB-Editor erreichst. Zusätzlich ist natürlich auch die Dokumentation unter https://docs.microsoft.com/en-us/office ... /overview/ m. E. überdurchschnittlich gut im vergleich zur Dokumentation anderer Objektmodelle, die manchmal nur mit der benennung einer Methode und den benötigten Datentypen daher kommen.

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10441
Registriert: 14. Mai 2013, 11:08

Re: Alle Bilder per Makro komprimieren

Beitragvon G.O.Tuhls » 05. Jul 2022, 15:10

Als JPG wäre es nochmal deutlich kleiner, dann müsste ich aber jeder PPT beibringen, dass das jetzt JPGs sind und keine PNGs mehr.

Was als JPG über Einfügen importiert wird, speichern Office-Programme auch als JPG. Ist aber bei Strichzeichnungen u. a. Grafiken nicht zu empfehlen, weil JPG eine eingebaute Unschärfe hat, die nur bei Fotos nicht auffällt.

Gruß
G. O.
Press any thumb to continue. :D
Benutzeravatar
G.O.Tuhls
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8331
Registriert: 26. Mär 2010, 14:19
Wohnort: Berlin


Zurück zu PowerPoint Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron