У меня есть повторяющийся процесс, который я бы очень хотел автоматизировать в Photoshop, но боюсь, что он слишком сложен.
У меня есть около 1000 фотографий заката, каждая из которых сделана с разницей в пару секунд (подумайте о таймлапсе).
Я хочу взять вертикальные полосы шириной 4 пикселя с каждой фотографии, а затем вставить их рядом друг с другом, чтобы при движении слева направо по изображению закат продвигался дальше.
Таким образом, первые 4 пикселя моего окончательного изображения взяты из изображения 1, вторые 4 пикселя из изображения 2 и т. д.
Я не могу понять, как создать действие, которое каждый раз отличается, например. выберите полосу шириной 4 пикселя при регистрации, увеличивая каждый раз на 4 пикселя.
Любые идеи?
Для этого вам нужно будет использовать циклы и переменные в скрипте. Предполагая, что файлы названы последовательно, так как большинство нормальных камер будут генерировать их, тогда это будет выглядеть примерно так на высоте 50 000 футов:
//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
}
Я сделал некоторые предположения выше:
Если первая пара не является допустимым предположением, скорректируйте код по мере необходимости. ;)
Если вам нужна дополнительная помощь по синтаксису использования переменных, на ум приходят две ссылки:
Просто для тех, кто заинтересован, вот окончательный сценарий:
-- 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
Яри Кейнянен
Мэтт Грум