Скрипт для событий изображений перезаписывает мои файлы ранее переформатированными файлами с тем же именем - PullRequest
1 голос
/ 25 августа 2011

У меня есть простой Applescript для изменения размера фотографий с помощью Image Events.На фотографиях изображены футболисты, поэтому все они названы по номеру, как в «1.jpg», «4.jpg» и так далее.Проблема, с которой я сталкиваюсь, заключается в том, что, когда я делаю несколько партий игроков в разных каталогах, сценарий перезаписывает фотографию одной из другой команды с тем же именем файла, которая была ранее сделана.Опять же, эти фотографии были размещены в разных каталогах.Конечный результат - после успешного запуска два или три раза отформатированные фотографии игроков запутаются.

Вот что у меня есть в сценарии для вызова событий изображения.

on open some_items
    repeat with this_item in some_items
        try
            rescale_and_save(this_item)
        end try
    end repeat
end open


to rescale_and_save(this_item)
    tell application "Image Events"
        launch
        set the target_width to 290
        -- open the image file
        set this_image to open this_item

        set typ to this_image's file type

        copy dimensions of this_image to {current_width, current_height}
        if current_width is greater than current_height then
            scale this_image to size target_width
        else
            -- figure out new height
            -- y2 = (y1 * x2) / x1
            set the new_height to (current_height * target_width) / current_width
            scale this_image to size new_height
        end if

        tell application "Finder" to set new_item to ¬
            (container of this_item as string) & "" & (name of this_item)
        save this_image in new_item as typ

    end tell
end rescale_and_save

1 Ответ

2 голосов
/ 25 августа 2011

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

Я бы посоветовал вам просто сказать Image Events выйти после обработки каждой папки; таким образом, это не запутается. (Вам также не нужен launch; единственная причина использовать launch - это если вы хотите, чтобы не фоновое приложение открывалось без представления окна документа без названия.)

Кстати, если вы хотите перезаписать существующее изображение в уменьшенной версии, все, что вам нужно, это save this_image. Image Events ведет себя так же, как и любое другое приложение, если открыть документ, изменить его и сохранить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...