/*
rahmen_optische_mitte erstellt ein Passepartout um ein Bild und
beruecksichtigt dabei die optische Mitte. Die Formel ist von
von Joe Miller, siehe http://www.fineart-photography.com/oc.html.
Das Script speichert nichts.
Rahmenfarbe ist die eingestellte Hintergrundfarbe.
Steuerungsmoeglichkeiten:
- rl_Rand ermoeglicht die Vorgabe der Randerweiterung pro Seite in Prozent.
- Zielformat ermoeglicht ein Bild mit Rahmen im Format abweichend vom Bildformat.
Bei Bild im Hochformat und quadratischem Zielformat kann die Zielgroesse kleiner als
die Bildgroesse sein. Dann wird eine Fehlermeldung ausgegeben und nichts gemacht.
*/
var rl_Rand = 20; // Erweiterung des rechten und linken Randes in Prozent
var Zielformat = 4 / 3; // Formatverhaeltnis gesamt mit Rahmen
// Eingabe entweder als Bruch z. B. 3/2, 4/3, 1/1
// oder als Zahl mit Dezimalpunkt 1.5, 1.33, 1
// Ab hier rumfummeln nur noch mit Ahnung
var startRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
var aD = activeDocument;
var Bildbreite = aD.width.value
var Bildhoehe = aD.height.value
// Bei Bild im Quer- oder Quadratformat Zielformatverhaeltnis vertauschen
if (Bildbreite <= Bildhoehe)
Zielformat = 1 / Zielformat;
var Erweiterung = aD.width.value * rl_Rand / 100;
var Zielbreite = aD.width.value + 2 * Erweiterung;
var Zielhoehe = Zielbreite / Zielformat;
// Bei quadratischem Bild muss neue Hoehe gleich Breite sein
if (Zielformat == 1)
Zielhoehe = Zielbreite;
if (Zielhoehe > Bildhoehe) {
// linken und rechten Rand erweitern
aD.resizeCanvas(aD.width.value + 2 * Erweiterung, null, AnchorPosition.MIDDLECENTER);
// oberen Rand erweitern
Erweiterung = ((Zielhoehe - Bildhoehe) / 2)
- (((Zielbreite - Bildbreite) / 2) * (Zielhoehe - Bildhoehe) / 2) / Zielbreite;
aD.resizeCanvas(null, aD.height.value + Erweiterung, AnchorPosition.BOTTOMCENTER);
// unteren Rand erweitern
Erweiterung = Zielhoehe - Bildhoehe - Erweiterung
aD.resizeCanvas(null, aD.height.value + Erweiterung, AnchorPosition.TOPCENTER); }
else
alert("Zielhoehe ist kleiner als Bildhoehe!\nBitte anderes Zielformat oder breiteren Rahmen waehlen.");
app.preferences.rulerUnits = startRulerUnits;