Bilder auf Fileserver über VBS mit ImageMagick automatisch verkleinern
Problem :
Welcher Admin kennst das nicht , die Benutzer machen Bilder mit einer 12 MP Kamera und legen die Bilder auch in dieser Auflösung auf dem Fileserver ab. Sicherlich ist das in dem einen oder anderen Fall sinnvoll , jedoch nicht immer. In meinem Fall ist es nicht nötig die Bilder in der höchsten Auflösung zu speichern da diese weder ausgedruckt noch weiterverarbeitet werden. Um die Dateigröße von Anfang an auf ein erträgliches Maß zu reduzieren habe ich dieses Skript erstellt. Es verwendet Imagemagick und benötigt eine Installation auf dem Rechner auf dem das Skript laufen soll.
Dieses Skript läuft bei mir einmal in der Woche um alle Bilder im Ordner und allen Unterordnern zu verkleinern. Es wird ein rekursiver Dateidurchlauf auf die definierte Erweiterung ausgeführt
Dieses Skript stellt folgende Parameter bereit
Download :
ImageMagick
konvPic.vbs
Erklärung :
Um über ImageMagick zu konvertieren muss folgendes Object instanziert werden.
Dies kann dann so angesprochen werden.
man kann auch anstelle von ObjImg.Convert die Funktion ObjImg.Mogrify verwenden. Der Unterschied zwischen .Convert und .Mogrify liegt darin das .Convert eine neue Datei anlegt und .Mogrify die vorhandene überschreibt.
Sollte ein Fehler auftreten das das ActiveX Element nicht erstellt werden kann liegt das daran das entweder die falsche Imagemagick Version installiert ist oder das Skript über den Pfad C:\Windows\SysWOW64\cscript.exe gestartet werden muss.
Welcher Admin kennst das nicht , die Benutzer machen Bilder mit einer 12 MP Kamera und legen die Bilder auch in dieser Auflösung auf dem Fileserver ab. Sicherlich ist das in dem einen oder anderen Fall sinnvoll , jedoch nicht immer. In meinem Fall ist es nicht nötig die Bilder in der höchsten Auflösung zu speichern da diese weder ausgedruckt noch weiterverarbeitet werden. Um die Dateigröße von Anfang an auf ein erträgliches Maß zu reduzieren habe ich dieses Skript erstellt. Es verwendet Imagemagick und benötigt eine Installation auf dem Rechner auf dem das Skript laufen soll.
Dieses Skript läuft bei mir einmal in der Woche um alle Bilder im Ordner und allen Unterordnern zu verkleinern. Es wird ein rekursiver Dateidurchlauf auf die definierte Erweiterung ausgeführt
Dieses Skript stellt folgende Parameter bereit
------------------------------------------------------------------------------------------
-q: = Quelle zum Startordner
-e: = Welche Datei Typen sollen konvertiert werden
-s: = Auflösung der Konvertierten Bilder
-j: = Qualität für die Output Bilder (JPG 1-100 , PNG 1-9)
-l: = Schreibt ein Logfile mit an den angegeben Ort
wenn kein Wert übergeben wird , wird kein Logfile erzeugt
------------------------------------------------------------------------------------------
Download :
ImageMagick
konvPic.vbs
Erklärung :
Um über ImageMagick zu konvertieren muss folgendes Object instanziert werden.
Dim ObjImg : Set ObjImg = CreateObject("ImageMagickObject.MagickImage.1")
Dies kann dann so angesprochen werden.
ObjImg.Convert QUELLDATEI , "-resize" , AUFLÖSUNG , "-format" , "jpg" , "-quality" , QUALITÄT , ZIELDATEI
man kann auch anstelle von ObjImg.Convert die Funktion ObjImg.Mogrify verwenden. Der Unterschied zwischen .Convert und .Mogrify liegt darin das .Convert eine neue Datei anlegt und .Mogrify die vorhandene überschreibt.
Sollte ein Fehler auftreten das das ActiveX Element nicht erstellt werden kann liegt das daran das entweder die falsche Imagemagick Version installiert ist oder das Skript über den Pfad C:\Windows\SysWOW64\cscript.exe gestartet werden muss.