Ich muss viele Bilder mit dem gewünschten Effekt auf ein 4:3-Verhältnis skalieren.
Gibt es eine Möglichkeit, dies mit Photoshop-Aktionen zu tun? (Der Hintergrund kann skaliert oder zwei Kopien an die Seiten verschoben werden, beides funktioniert)
Bildnachweis: https://itunes.apple.com/us/app/id603106194
Vielleicht ist dies nicht die kugelsicherste Methode, aber Sie könnten so etwas tun.
Zeichnen Sie eine Aktion wie diese auf:
Layer > New > Layer from background...
alt
beim Klicken gedrückt, damit Sie nichts gefragt wird. Nicht, dass es wirklich wichtig wäre.)File > Automate > Fit image...
. Geben Sie die gewünschte Dokumentenbreite und -höhe an (ich habe 500x375px verwendet).Layer > Duplicate layer...
- Duplizieren: Neu (keine Benennung erforderlich)Image > Image size...
- Klicken Sie auf die Kette, um das Seitenverhältnis freizugeben. Geben Sie die gewünschte Breite des Dokuments ein (ich habe 500 Pixel verwendet).Select > All
Edit > Copy
File > Close
- Schließen ohne speichern.Image > Canvas size...
. Geben Sie ihm die gewünschte Breite (ich habe 500px verwendet)
Canvas size
sowohl Breite als auch Höhe festlegen möchten: Stoppen Sie die Aufzeichnung der Aktion, machen Sie die letzte Größenänderung rückgängig, starten Sie die Aufzeichnung erneut und wenden Sie die Leinwandgröße an. (Da Bild anpassen entweder die Breite oder Höhe auf die von Ihnen angegebene Größe einstellt, zeichnet die Aktion nur einen dieser Werte auf, wenn Sie versuchen, die Größe der Leinwand zu ändern, was möglicherweise nicht wünschenswert ist.)Edit > Paste
Layer > New > Background from layer
Filter > Blur > Gaussian blur...
Um es dann mit einem Haufen Bilder auszuführen: File > Scripts > Image processor...
und geben Sie ihm Ihre Aktion zum Ausführen.
...oderFile > Automate > Batch...
Alternative Aktion, die Kopien des Originalbilds verwendet, sie so ausrichtet, dass sie das Dokument seitlich ausfüllen, und das dann verwischt (etwas anderes Endergebnis und etwas weniger kugelsicher):
Layer > New > Layer from background...
alt
beim Klicken gedrückt, damit Sie nichts gefragt wird. Nicht, dass es wirklich wichtig wäre.)File > Automate > Fit image...
. Geben Sie ihm Ihre gewünschte Dokumentenbreite und -höhe.Image > Canvas size...
. Geben Sie ihm die Breite, genau wie zuvor.
Canvas size
sowohl Breite als auch Höhe festlegen möchten: Stoppen Sie die Aufzeichnung der Aktion, machen Sie die letzte Größenänderung rückgängig, starten Sie die Aufzeichnung erneut und wenden Sie die Leinwandgröße an. (Da Bild anpassen entweder die Breite oder Höhe auf die von Ihnen angegebene Größe einstellt, zeichnet die Aktion nur einen dieser Werte auf, wenn Sie versuchen, die Größe der Leinwand zu ändern, was möglicherweise nicht wünschenswert ist.)Layer > New > Layer via copy
- Das ist für die Mitte (warum nicht..)Layer > New > Layer via copy
- Dies ist für die linke SeiteSelect > All
Layer > Align layers to selection > Left edges
Layer > New > Layer via copy
- Dies ist für die rechte SeiteSelect > All
Layer > Align layers to selection > Right edges
Select > Deselect
Layer > Merge down
Layer > Merge down
Layer > New > Background from layer
Filter > Blur > Gaussian blur...
So habe ich es mit Drehbüchern gemacht, vielleicht sind nicht viele Leute Fans davon, aber sie haben für mich funktioniert. Überprüfen Sie die Kommentare im Code auf Details.
Dann File -> Automate -> Batch... um einen Ordner mit der von Ihnen erstellten Aktion zu durchlaufen.
var doc = app.activeDocument;
var layer = doc.activeLayer;
var group = layer.parent.layers;
// get document width and height
var w = doc.width.toString().replace(' px', '')
var h = doc.height.toString().replace(' px', '')
if ( w/h == 4/3 ) { //if the image ratio is exactly 4:3
//just resize to 1280x960
doc.resizeImage(1280,960,null,ResampleMethod.BICUBIC);
} else if ( w/h > 4/3 ){ //if the image ratio is wider than 4:3
//create two layers, one for the blurry background and the other one on top of it
layer.duplicate()
layer.duplicate()
group[1].name = 'bkg';
group[0].name = 'top';
//crop to a 4:3 ratio
var bounds = [ 0, -(w/4*3-h)/2, w, w/4*3-(w/4*3-h)/2];
doc.crop(bounds);
//clear the background with the image fitting the canvas
var black = new SolidColor();
black.rgb.red = black.rgb.green = black.rgb.blue = 0;
doc.selection.selectAll();
doc.selection.fill( black );
doc.selection.clear();
//scale the background image to fill the canvas
doc.activeLayer = doc.artLayers.getByName("bkg");
var scaleFactor = doc.height.toString().replace(' px', '')/h*100
var userResampleMethod = app.preferences.interpolation;
app.preferences.interpolation = ResampleMethod.BILINEAR;
activeDocument.activeLayer.resize(scaleFactor, scaleFactor, AnchorPosition.MIDDLECENTER);
app.preferences.interpolation = userResampleMethod;
//resize the document to 1280x960
doc.resizeImage(1280,960,null,ResampleMethod.BICUBIC);
//gaussian blur the background by 20px
gaussianBlur(20);
} else if ( w/h < 4/3 ){ //if the image ratio is taller than 4:3
//create two layers, one for the blurry background and the other one on top of it
layer.duplicate()
layer.duplicate()
group[1].name = 'bkg';
group[0].name = 'top';
//crop to a 4:3 ratio with the image fitting the canvas
var bounds = [-(h/3*4-w)/2, 0, h/3*4-(h/3*4-w)/2, h];
doc.crop(bounds);
//clear the background
var black = new SolidColor();
black.rgb.red = black.rgb.green = black.rgb.blue = 0;
doc.selection.selectAll();
doc.selection.fill( black );
doc.selection.clear();
//scale the background image to fill the canvas
doc.activeLayer = doc.artLayers.getByName("bkg");
var scaleFactor = doc.width.toString().replace(' px', '')/w*100
var userResampleMethod = app.preferences.interpolation;
app.preferences.interpolation = ResampleMethod.BILINEAR;
activeDocument.activeLayer.resize(scaleFactor, scaleFactor, AnchorPosition.MIDDLECENTER);
app.preferences.interpolation = userResampleMethod;
//resize the document to 1280x960
doc.resizeImage(1280,960,null,ResampleMethod.BICUBIC);
//gaussian blur the background by 20px
gaussianBlur(20);
}
function gaussianBlur(amount){
var idGsnB = charIDToTypeID( "GsnB" );
var desc2 = new ActionDescriptor();
var idRds = charIDToTypeID( "Rds " );
var idPxl = charIDToTypeID( "#Pxl" );
desc2.putUnitDouble( idRds, idPxl, amount );
executeAction( idGsnB, desc2, DialogModes.NO );
}
app.activeDocument.width.value
Joonas
Benutzer45605