Автоматизация Photoshop - немного отличается в каждой итерации - Фотопедия
3 голосов
/ 19 января 2011

У меня повторяющийся процесс, который я бы очень хотел автоматизировать в Photoshop, но я боюсь, что он слишком сложен.

У меня ~ 1000 снимков заката, каждый из которых сделан с интервалом в несколько секунд (думаю, промежуток времени).

Я хочу взять вертикальные полосы шириной 4 пикселя с каждой фотографии, а затем вставить их рядом друг с другом, чтобы при перемещении по изображению слева направо закат становился все дальше.

Итак, первые 4 пикселя моего окончательного изображения взяты из рисунка 1, вторые 4 пикселя - из рисунка 2 и т. Д.

Я не могу понять, как создать действие, которое каждый раз отличается, например. выберите полосу шириной 4px при регистрации, увеличивающейся на 4 пикселя каждый раз.

Есть идеи?

Ответы [ 2 ]

8 голосов
/ 19 января 2011

Вам понадобится войти в циклы и переменные внутри скрипта, чтобы сделать это. Если предположить, что файлы названы последовательно, как это было бы разработано большинством здравомыслящих камер, то это выглядело бы примерно примерно так на высоте 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

}

Я сделал несколько предположений выше:

  1. вы кодируете в JS
  2. первое изображение с номером 1234, и они идут по порядку, с такими именами, как "img_1234.jpg"
  3. файл имеет высоту 3400 пикселей.
  4. Вы уже знаете, как открыть изображение, вырезать его и вставить в другое изображение. :)

Если первая пара не является допустимым предположением, скорректируйте код по мере необходимости. ;)

Если вам нужна дополнительная помощь по синтаксису использования переменных, на ум приходят две ссылки:

  1. Превосходные руководства Adobe по созданию сценариев
  2. Ресурсы JS школы W3 или раздел JS Центра разработчиков Mozilla
0 голосов
/ 21 января 2011

Только для тех, кто заинтересован, вот последний сценарий:

-- 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
...