2016-12-28 2 views
1

Хотите узнать больше о событиях с изображением Mac Я пытаюсь узнать, как сохранить файл из одного типа в другой тип. Например, если у меня есть BMP изображений по имени foobar.bmp Я хотел узнать, как сохранить его как foobar.jpg но в моем обработчике я получаю сообщение об ошибке:AppleScript Image Events can not get class asDB

Image Events got an error: Can’t get «class asDB» id (application "Image Events") of image "foobar.bmp".

Мой код внутри моего обработчика:

tell application "Finder" 
    set directory to (choose folder with prompt "Please select a directory.") 
    set someImages to (files of folder directory where name extension is "bmp") as alias list 
    repeat with someImage in someImages 
     tell application "Image Events" 
      launch 
      set workingImage to open someImage 
      save workingImage as JPEG in directory 
      close workingImage 
     end tell 
    end repeat 
end tell 

Я сделал тест, чтобы увидеть, если save может понадобиться POSIX путь вместо псевдонима Путь с:

set directoryPosix to (POSIX path of directory) 

и изменил save:

save workingImage as JPEG in directoryPosix 

, но я до сих пор производит ту же самую ошибку, и я не понимаю, почему. Код работает, но просто выдает ошибку и после поиска я не могу найти разрешение. Я уже знаю, как это сделать с Bash с помощью ImageMagick, и я мог бы сделать это с помощью AppleScript и SIP, но я хотел бы узнать больше об Image Events. Что я делаю неправильно, чтобы выбросить ошибку? Если это помогает моей ОС обновиться и запустить Yosemite версии 10.10.5.

ответ

0

Вы должны указать полный (HFS или POSIX) путь нового файла, а не alias спецификатора в папку назначения:

set directory to (choose folder with prompt "Please select a directory.") as text 
tell application "Finder" to set someImages to (files of folder directory where name extension is "bmp") as alias list 

tell application "Image Events" 
    launch 
    repeat with someImage in someImages 
     set workingImage to open someImage 
     set fileName to name of workingImage 
     set newFilePath to directory & text 1 thru -4 of fileName & "jpg" 
     save workingImage as JPEG in newFilePath 
     close workingImage 
    end repeat 
end tell