2015-01-19 4 views
2

Пытается написать простой сценарий для преобразования файла изображения в разные размеры, и AppleScript продолжает возвращать мне «недостающее значение» при сохранении файлов. Кто-нибудь знает, что происходит в следующем коде?AppleScript сохранить изображение ошибка ошибка?

set f to choose file 

set image_file to f as alias 

convertFile(image_file, "[email protected]", 1024) 
convertFile(image_file, "_512.", 512) 

-- iPad (iOS 7+) 
convertFile(image_file, "[email protected]", 152) 
convertFile(image_file, "_76.", 76) 

-- iPad (iOS 6) 
convertFile(image_file, "[email protected]", 144) 
convertFile(image_file, "_72.", 72) 

-- iPhone (iOS 7+) 
convertFile(image_file, "[email protected]", 180) 
convertFile(image_file, "[email protected]", 120) 
convertFile(image_file, "_60.", 60) 

-- iPhone (iOS 6) 
convertFile(image_file, "[email protected]", 114) 
convertFile(image_file, "_57.", 57) 

-- iPhone (iOS 7 Spotlight) 
convertFile(image_file, "[email protected]", 80) 
convertFile(image_file, "_40.", 40) 

-- iPhone (iOS 5,6 Spotlight, iOS 5-7 Settings) 
convertFile(image_file, "[email protected]", 58) 
convertFile(image_file, "_29.", 29) 

on convertFile(source_file, file_spec, image_size) 
    set my_path to POSIX path of source_file 

    set AppleScript's text item delimiters to "/" 
    set path_parts to text items of my_path 
    if last item of path_parts is not "" then 
     set file_name to last item of path_parts 
     set file_path to items 1 thru -2 of path_parts as string 
    end if 

    set AppleScript's text item delimiters to "." 
    set filename_parts to text items of file_name 
    set prefix to items 1 thru -2 of filename_parts as string 
    set suffix to last item of filename_parts 

    set target_posix_path to file_path & "/" & prefix & file_spec & suffix 
    set target_posix_file to target_posix_path as POSIX file 

    tell application "Image Events" 
     set this_image to open source_file 
     scale this_image to size image_size 
     save this_image in target_posix_path 
     close this_image saving no 
    end tell 
end convertFile 

Event & Ответы Выход на моем MacBook Air (Mac OS X 10.9.5):

tell application "AppleScript Editor" 
    choose file 
     --> alias "Macintosh HD:Users:william:Desktop:goro_icon:icon.png" 
end tell 
tell application "Image Events" 
    open alias "Macintosh HD:Users:william:Desktop:goro_icon:icon.png" 
     --> image "icon.png" 
    scale image "icon.png" to size 1024 
    save image "icon.png" as PNG in "/Users/william/Desktop/goro_icon/[email protected]" 
     --> file "Macintosh HD:Users:william:Desktop:goro_icon:[email protected]" 
    close image "icon.png" saving no 
    open alias "Macintosh HD:Users:william:Desktop:goro_icon:icon.png" 
     --> image "icon.png" 
    scale image "icon.png" to size 512 
    save image "icon.png" as PNG in "/Users/william/Desktop/goro_icon/icon_512.png" 
     --> missing value 
    close image "icon.png" saving no 
    open alias "Macintosh HD:Users:william:Desktop:goro_icon:icon.png" 
     --> image "icon.png" 
    scale image "icon.png" to size 152 
    save image "icon.png" as PNG in "/Users/william/Desktop/goro_icon/[email protected]" 
     --> missing value 
    close image "icon.png" saving no 
    (omitted the long list of same errors..) 
end tell 
+0

FWIW Я просто запустил ваш код здесь, на тестовом изображении (файл .png на моем рабочем столе), и он работал нормально - мне интересно, не является ли это чем-то конкретным для вашего имени файла, пути к вашему файлу, файла/разрешений каталога или, возможно, суффикса или типа файла для вашего входного файла? –

+0

Выход мой результат выглядит следующим образом: \t РАССКАЖИ "AppleScript Editor" \t \t выбрать файл \t \t \t -> псевдоним "Macintosh HD: Пользователи: уилльям: Desktop: goro_icon: icon.png" \t конец сказать \t сКАЖИТЕ приложения "События изображения" \t \t открыт псевдоним "Macintosh HD: пользователей: Оертель: Desktop: goro_icon: icon.png" \t \t \t -> изображение "icon.png" \t \t масштаб изображения "icon.png" в размере 512 \t \t сохранить изображение "icon.png" в формате PNG в "/Users/william/Desktop/goro_icon/icon_512.png" \t \t \t -> отсутствующее значение \t \t close image "icon.png" save no ... \t end tell –

+0

Я думаю, что единственное, что я могу вам сказать, это то, что я запускаю OS X 10.10.1 (Yosemite) и, возможно, также предлагаю попробовать другой входной файл. –

ответ

1

Наконец, после попытки, что Павел упоминает в комментарии выше, я нашел повод для задачи который связан с самим файлом. Я попробовал скрипт с другим файлом, и скрипт работает без проблем.

Открыл файл в редакторе и экспортировал новый файл с тем же размером (так что файл выглядит одинаково, но с разным размером). Новый файл работал. Таким образом, проблема может быть вызвана некоторыми непокрытыми ошибками в Image Events.