Ich habe einen sich wiederholenden Prozess, den ich gerne in Photoshop automatisieren würde, aber ich befürchte, dass er einfach ein bisschen zu kompliziert ist.
Ich habe ungefähr 1000 Bilder eines Sonnenuntergangs, die jeweils im Abstand von ein paar Sekunden aufgenommen wurden (denken Sie an Zeitraffer).
Ich möchte 4 Pixel breite vertikale Streifen von jedem Foto nehmen und sie dann nebeneinander einfügen, sodass der Sonnenuntergang weiter voranschreitet, wenn Sie sich von links nach rechts über das Bild bewegen.
Die ersten 4 Pixel meines endgültigen Bildes stammen also von Bild 1, die zweiten 4 Pixel von Bild 2 usw.
Ich kann nicht herausfinden, wie ich eine Aktion erstellen kann, die jedes Mal anders ist, z. Wählen Sie einen 4 Pixel breiten Streifen bei Registrierungen, die jedes Mal um 4 Pixel erhöht werden.
Irgendwelche Ideen?
Sie müssen dazu Schleifen und Variablen innerhalb des Skripts verwenden. Angenommen, die Dateien werden nacheinander benannt, wie die meisten vernünftigen Kameras sie erzeugen würden, dann würde es auf der Höhe von 50.000 Fuß ungefähr so aussehen:
//control variable, counts which photo you're on
var lcv = 0;
//how many photos are there?
var numPhotos = 1000;
//used to track the name of the file in the loop
var filename;
//used to track the shape to cut in the loop
var shapeRef;
//used to track the left and right edges of the slice
var leftEdge;
var rightEdge;
//main processing loop
for (lcv = 0; lcv < numPhotos; lcv++ ) {
// process one image.
filename = 'img_'+(lcv + 1234)+'.jpg';
//open the file here... get it ready to cut from
...
//create the selection box here, we'll use the LCV to control how far over we move
leftEdge = lcv * sliceWidth;
rightEdge = leftEdge + sliceWidth;
shapeRef = [ [leftEdge, 0], //upper left
[rightEdge, 0], //upper right
[rightEdge, 3400], //lower right
[leftEdge, 3400] ]; //lower left
// use the above shapeRef to first cut from the above opened file, then paste it into your master file.
// close the file you opened above so we can move on to the next file
}
Ich habe oben einige Annahmen getroffen:
Wenn das erste Paar keine legitimen Annahmen sind, passen Sie den Code nach Bedarf an. ;)
Wenn Sie weitere Hilfe bei der Syntax der Verwendung von Variablen benötigen, fallen Ihnen zwei Referenzen ein:
Nur für diejenigen, die es interessiert, hier ist das endgültige Skript:
-- Script to merge 1043 images into a single image by taking slices and
-- reassembling them
-- Target Adobe Photoshop
tell application "Adobe Photoshop CS5"
activate
-- Create the ultimate document
set uDocRef to make new document with properties {width:2848 as pixels, height:4288 as pixels}
-- First image number of the series
set firstNum to 868
set lastNum to 1580
set leftEdge to 0
-- Step through each picture
repeat with currentNum from firstNum to lastNum
-- Open the image
if currentNum is less than 1000 then
set tCurrentNum to "0" & currentNum
else
set tCurrentNum to currentNum
end if
set filePath to ".../DSC_" & tCurrentNum & ".nef"
with timeout of 300 seconds
open alias filePath
end timeout
set wDocRef to current document
-- Make a selection
set rightEdge to leftEdge + 4
-- top left top right bottom right bottom left
set shapeRef to {{leftEdge, 0}, {rightEdge, 0}, {rightEdge, 4288}, {leftEdge, 4288}}
select wDocRef region shapeRef
copy
-- Paste the selection into the ultimate document
set current document to uDocRef
select uDocRef region shapeRef
paste
-- Close the image
close wDocRef saving no
-- Update the left edge position
set leftEdge to rightEdge
end repeat
end tell
Jari Keinänen
Matt Grum