Virtual Log

Das Konvertieren von Bildern auf eine bestimmte Größe gehört zu den Routine-Aufgaben (nicht nur) von Bloggern. In diesem Posting zeige ich, wie man das in PaintShop Pro mit einem Resize-Skript automatisieren kann.

Screenshot Corel PaintShop Pro X4

Corel PaintShop Pro X4 Script Batch Process

Es gibt viele Gründe, warum man Bilder nicht in Vollauflösung posten möchte. Zum einen würde es die Ladezeit der Website erheblich verlangsamen, wenn man alle Bilder in Original-Größe einbetten würde, was bei heutigen Kompaktkameras schon 12 Megapixel und mehr bedeutet.

Bei der üblichen Größe von Monitoren (1-2 Megapixel) wäre es auch ein Overkill und würde erheblich mehr Datenvolumen am Server bedeuten. Bei Websites mit viel Traffic macht das einen enormen Unterschied, in welcher Auflösung Bilder gepostet werden.

Manche Blogger wollen ihre Bilder auch generell nicht in Original-Größe posten, um ihre Bildrechte leichter nachweisen zu können oder "das Klauen" von Bildern zu erschweren, was aber in Zeiten von Diensten wie Google Search by Image nicht mehr so wichtig ist.

Ich würde sagen als Best-Practise hat sich auf Blogs folgende Praktik etabliert: Bilder in Display-Größe (oder darüber für High-DPI-Geräte wie Smartphones und Tablets) einbetten und auf eine größere Version, wenn man will auch auf die Original-Größe, verlinken.

Das heißt, wenn das Image-Element zum Beispiel 560 Pixel breit ist, verkleinert man das Bild auf eben diese Größe.

Das Verkleinern der Bilder kann bei einem Foto-lastigen Blog aber schon mal in Arbeit ausufern und daher stellt sich die Frage, wie man das automatisieren kann.

Ich bin schon seit vielen Jahren ein großer Fan des Bildbearbeitungsprogramms PaintShop Pro und habe mir dafür ein Skript (eigentlich sogar mehrere für verschiedene Auflösungen) geschrieben, das ich hier teilen möchte.

Das Skript in Pyhton-Syntax verkleinert das Bild auf eine minimale Seitenlänge von 800 Pixel (kann man natürlich beliebig anpassen), wenn das Bild mindestens 1000x1000 Pixel groß ist. Ansonsten wird das Bild in seiner Original-Größe belassen.

Erwähnenswert ist im Skript die Verwendung der PaintShop Pro eigenen Funktion ReturnImageInfo, um auf die Meta-Informationen wie die Seitenlängen in Pixel des aktuellen Bilds zuzugreifen.

Um das Skript auf ein ganzes Set von Bildern anzuwenden, wählt man die Bilder im Menü File > Batch Process aus und gibt dort das Skript an, welches auf alle Bilder angewandt werden soll.

Voilà!

Resize-Skript für Corel PaintShop Pro X2 oder höher

Hier ist das Resize-Skript für Corel PaintShop Pro zum Download.

Speichern unter My Documents und je nach PSP-Version findet man dort ein Verzeichnis "Scripts-Restricted" und "Scripts-Trusted" unter dem Corel PaintShop Pro Ordner.

Lizenz: Public Domain

— Cut

from PSPApp import *

def ScriptProperties():
return {
'Author': u'Viktor Krammer',
'Copyright': u'https://virtualnet.at/',
'Description': u'Public domain resize script for PSP.',
'Host': u'Paint Shop Pro Photo',
'Host Version': u'12.50'
}

def Do(Environment):
# EnableOptimizedScriptUndo
App.Do( Environment, 'EnableOptimizedScriptUndo', {
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((12,5,0),1)
}
})

# Get image size
ImageInformation=App.Do(Environment,'ReturnImageInfo')
Width=ImageInformation['Width']
Height=ImageInformation['Height']

# Resize only if picture is larger than 1000x1000
if Width>1000 and Height>1000:
# Resize: Portrait to 800px width and Landscape to 800px height
if Width<=Height:
App.Do( Environment, 'Resize', {
'CurrentDimensionUnits': App.Constants.UnitsOfMeasure.Pixels,
'CurrentResolutionUnits': App.Constants.ResolutionUnits.PixelsPerIn,
'MaintainAspectRatio': True,
'AspectRatio': None,
'Resample': True,
'ResampleType': App.Constants.ResampleType.SmartSize,
'ResizeAllLayers': True,
'Width': 800,
'Height': None,
'SharpnessValue': 50,
'AdvancedMode': True,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((12,5,0),1)
}
})
else:
App.Do( Environment, 'Resize', {
'CurrentDimensionUnits': App.Constants.UnitsOfMeasure.Pixels,
'CurrentResolutionUnits': App.Constants.ResolutionUnits.PixelsPerIn,
'MaintainAspectRatio': True,
'AspectRatio': None,
'Resample': True,
'ResampleType': App.Constants.ResampleType.SmartSize,
'ResizeAllLayers': True,
'Width': None,
'Height': 800,
'SharpnessValue': 50,
'AdvancedMode': True,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((12,5,0),1)
}
})

Weitere Ressourcen

14.05.2012 Virtual Net

Kommentieren

Name
E-Mail (wird nicht veröffentlicht)
Homepage (optional)