VBA - Bild komprimieren
#1
Hallo Forum,

Suche seit Tagen eine Möglichkeit mit VBA meine Bilder (einige Tausend) zu verkleinern.

Die Code-Befehle bringen mir nicht die erwartete Lösung.
Verwende: Corel Photo-Paint X5

Code:
Sub MegasellerPicture()

' Vorgehen:
'           - Bilder ins COREL PHOTO-PAINT ziehen
'           - Makro ausführen
' Ergebnis: - Foto in gewünschter Grösse
'           - Kompression eingefügt

' Konstanten (hier können Änderungen gemacht werden)
Const BILDBREITE_k As Integer = 80
Const BILDHOEHE_k As Integer = 0
Const KOMPRESSION_k As Integer = 10

' Variablen
Dim strFileName As String
Dim strPath As String
Dim strJPGFile As String
Dim strText1 As String
Dim strText2 As String
Dim flt As ExportFilter
Dim ad As Document
Dim cs As Object
Dim sso As StructSaveOptions

Set ad = Application.ActiveDocument
Set cs = Application.CorelScript
Set sso = CreateStructSaveOptions


' Dateiname mit Endung
strFileName = ad.FileName
' Pfadname (ohne Dateinamen)
strPath = ad.FilePath

    
    ' Bild ms?????_k wird erstellt
    ad.Resample (BILDBREITE_k)
    ' Bild wird gespeichert mit der Endung k.jpg (Dateiname bis&mit _ bereits vorhanden)
    strJPGFile = Left(strFileName, InStr(strFileName, "_")) & "k.jpg"
    ' und zusätzlich eine Kompression hinzuberechnet (0 = keine, 100 = max)
    sso.UseColorProfile = False
    sso.Compression = KOMPRESSION_k
    Set flt = ad.SaveAs(strPath & strJPGFile, cdrJPEG, sso)
    flt.Finish
End If
    
    ' Bild schliessen, damit beim erneuten Klick aufs Makro direkt das nächste Bild bearbeitet wird
    ad.Close
End Sub

Mit Datei -> Exportieren... oder Datei -> Für das Web exportieren... werden die Bilder mehr komprimiert, als es mit meinem Code der Fall ist. Sad Zudem hat es dort Auswahlmöglichkeiten, die ich in meinem Code umgesetzt haben will.
- Auflösung (statt 300dpi, nur 150dpi)
- sso.UseColorProfile = False funktioniert auch nicht. (ob True/False sind beide Bilder gleich gross)

Als Ergebnis sind die Bilder so klein (in etwa 80x70 Pixel), da ist die Qualität nebensächlich. Meine Bilder sind aber mind. 5x zu gross (20-60 KB, statt 3-5 KB)

Vielen Dank für ein bisschen Hilfe.
Grüsse,
Christoph
Zitieren
#2
Hallo,
hast du schon probiert deine Einstellungen an einem Bild mit dem Macro-Recorder als "Script" aufzuzeichen und dann das Ganze über die Stapelverarbeitung zu machen?
Ein Bild öffnen, Recorder starten, alle Schritte aufzeichnen, Recorder stoppen. Eventuell musst du auch den Bildnahmen und Pfad nach beenden der Aufzeichnung aus dem Script löschen bzw. deaktivieren.
Das Öffnen, Speichern und schließen nicht mit aufzeichnen, das kannst du in der Stapelverarbeitung einstellen.


Eine Alternative wäre auch die Stapelverarbeitung von Irvanview
Zitieren
#3
Hallo Christoph,

geht auch mit PhotoImpact
sehr einfach. Das Softwarele bekommst Du schon super günstig
bei avitos.com Pearl. de, oder Amazone .

http://www.juergens-workshops.de/tutoria...rarbeitungund Irfan View

Bis dann
Jürgen
Zitieren
#4
Zitat:...meine Bilder (einige Tausend) zu verkleinern.

Hallo,

wie schon gesagt, ist PPaint dazu nicht das richtige Prog.

Irf-View kann sowas, aber bei einigen Tausend kann das seeeehr lange dauern, vor allem wenn du große Bilddateien hast (4 MB und größer)
Besser geht das mit ACDSee weil das eine Datenbank aufbaut und sowas richtig schnell erledigt. Damit kannst du auch deine Bilddateien ordentlich verwalten.

Gruß HaJö

PS: @ Jürgen: lösch doch bitte mal die Freundschaftsanfrage bei mir, die ist uralt (2008).
Zitieren
#5
Hallo,

Zitat:PS: @ Jürgen: lösch doch bitte mal die Freundschaftsanfrage bei mir, die ist uralt (2008).
__________________

Na gut, wenn Du das nicht mehr möchtest. Ist erledigt.

Christoph schreibt von ca., 60 KB und nicht von 4 MB und mehr.

Du hast aber Recht, ACDsee kann das auch.
Eigenartig das so manche Software es besser kann, als eine Teuere. Teure Smile
Bis dann
Jürgen
Zitieren
#6
Ihr Pessimisten!

Solange Koter nicht seinen "Senf" dazu gegeben hat...

Christoph, bitte noch ein wenig Geduld.

Freundliche Grüße vom Unkraut

Betriebssystem / Grafik-Software: Win 7
Zitieren
#7
Hallo, stimmt Koter hat bestimmt eine Lösung für dein VBA Problem.

Ansonnsten ginge auch das hier:
Du könntest auch ein schon bestehenden Macro unter Corel Draw (richtig gelesen!!!) benützen!!!
Mit dem Filekonverter kannst du auch ganze Ordner mit Bilder bearbeiten!!!

Funktionieren tuts so:
Draw starten, dann Extras-->Macros-->Macros ausführen-->FileKonverter (könnte auch unter GlobalMacros liegen)-->Ausführen.
Du kannst den Quellordner auswählen, den Zielordner, in welches Format gespeichert werden soll, unter Advanced kannst du bei jpg die Komprimierungsoptionen festlegen. Im Hauptbild unten die Größe und in einem Rutsch den ganzen Ordner bearbeiten
[Bild: attachment.php?attachmentid=9546&stc=1&d=1370875945]


Angehängte Dateien Thumbnail(s)
   
Zitieren
#8
Hallo norre,

wieder was gelernt.

Liebe Grüße
Jürgen
Zitieren
#9
Hallöchen...;-)

Ich mach das immer mit Online - Picture von Traumflieger.de
Das Programm ist kostenlos und braucht nicht Installiert zu werden.
Hier gibt es das Programm. Zip - Datei 770 Kb. http://www.traumflieger.de/desktop/onlinepicture...
Einen Ordner mit 166 Bildern, sowie mit einer Größe von 4000 x 3000 Pixel und mit einer Dateigröße
von ca. 6,5 Mb und mehr, verkleinern auf 80 x 60 Pixel mit einer Dateigröße von 2,87 Kb bis 3,00 Kb brauchen gestoppt 1 Minute und 53 Sekunden. Mit Namensänderung und Nummerierung. Man kann aber auch den Originalname beibehalten. Mit oder ohne Exif - Dateien.
Bei einem weiteren Ordner mit 256 Bildern dauerte das ganze 32 Sekunden.
Dateigröße war bei ca.1 Mb. pro Bild.

Zwei Beispiele mit den großen Bilder, einmal 2 Kb und einmal 3 Kb.


Angehängte Dateien
.jpg   Ungarn 167.jpg (Größe: 2 KB / Downloads: 37)
.jpg   Ungarn 017.jpg (Größe: 2,97 KB / Downloads: 38)
Zitieren
#10
Puh,

Hey Leute,
danke vielmals für eure jetzigen Beiträge. Hab nun einige Möglichkeiten das Problem anzugehen.

Hab ständig meine Mails überprüft und nie eines mit meinem Thread erhalten :-/ Das ist der Grund, dass ich da erst jetzt darauf antworte. ^^ (Habe falsche Mail-Einstellungen ausgewählt)

Zu Photo-Paint folgendes:
Photo-Paint wird zusätzlich für ähnliche Aufgaben verwendet.
- z.B. Ein Bild einscannen, verkleinern, Schärfe einstellen und unter neuem Format abspeichern mit einem Makro.
- zu meinem gesuchten Code gehört im selben Makro 2-3 weitere Schritte dazu (Übersichtshalber raus gelöscht, weil dieser Teil funktioniert ^^).
1) Zuerst ist es ein grosses Bild, und das Makro macht dann
2) ein Mittleres Bild, Schärfe einstellen, abspeichern unter anderem Namen,
3) danach erstellt er ein kleines Bild, Schärfe einstellen, abspeichern unter anderem Namen,
4) und dann gibt es eben das ganz kleine Bild (80x60 Pixel) und da spielt die Dateigrösse eine Rolle :-(((

Aber wenn andere Programme das besser hinkriegen, dann noch so gerne. Big Grin

Auf jedenfall toll eure Community hier! Falls ich nicht mehr weiterkomme, dann hört ihr wieder von mir. Smile

Beste Grüsse,
Christoph
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Transparentes PNG Bild ist milchig grau visionbrasil 46 740 23.02.2019, 17:52
Letzter Beitrag: visionbrasil
  Loch im Bild Roli 2 370 31.03.2018, 16:03
Letzter Beitrag: Roli
  Bild verformen canis 7 757 20.11.2017, 21:04
Letzter Beitrag: skifan
  Unebenheiten im Bild Luisa 11 1.000 19.04.2017, 10:10
Letzter Beitrag: swizzly
  Bild begradigen und zuschneiden Kellykiller 2 750 18.04.2016, 16:34
Letzter Beitrag: Kellykiller
  Schwarz/Weiß Bild und Farbe Tüfftele 10 2.174 03.06.2014, 21:29
Letzter Beitrag: Tüfftele
  Räteselhaftes Quadrat im Bild? (Photopaint X4) Karola 12 2.125 11.12.2013, 13:06
Letzter Beitrag: Karola
  Photopaint öffnet für jedes Bild wieder neu! schabronski 3 939 30.11.2013, 04:17
Letzter Beitrag: koter
  Bild wird nur teilweise Exportiert anorak 6 873 07.08.2013, 11:20
Letzter Beitrag: anorak
  Bild in BIld einfügen Jakob1980 8 1.246 24.04.2013, 11:57
Letzter Beitrag: morphsuite