Размеры значков используются системой, а не AppleScript, поэтому любые соглашения, которые система требует для «обычного» приложения, следует использовать и для приложения AppleScript.
РЕДАКТИРОВАТЬ
Согласно комментариям к одному из других ответов, вот скрипт, который создаст файл icns со всеми предлагаемыми размерами из любого изображения, которое вы выберете:
set picFile to choose file with prompt "Choose an image to iconize." of type {"public.image"}
set workingFolder to POSIX path of (path to temporary items from user domain)
set outputFolder to POSIX path of (path to desktop from user domain)
set sizesList to {16, 32, 128, 256, 512}
tell application "System Events"
set pictureFilePath to quoted form of (get POSIX path of picFile)
set {pictureName, ext} to {name, name extension} of picFile
if ext is not "" then
set pictureName to text 1 through -((length of ext) + 2) of pictureName
end if
-- create iconset folder
set iconsetFolder to make new folder at folder workingFolder with properties {name:pictureName & ".iconset"}
-- cycle through sizes to create normal and hi-def sized icon images
repeat with thisSize in sizesList
set iconFilePath to POSIX path of iconsetFolder & "/" & my makeFileNameFromSize(thisSize, false)
do shell script "sips -z " & thisSize & " " & thisSize & " " & "-s format png " & pictureFilePath & " --out " & iconFilePath
set iconFilePath to POSIX path of iconsetFolder & "/" & my makeFileNameFromSize(thisSize, true)
do shell script "sips -z " & thisSize * 2 & " " & thisSize * 2 & " " & "-s format png " & pictureFilePath & " --out " & iconFilePath
end repeat
-- create new icns file
set iconsetPath to quoted form of (POSIX path of iconsetFolder as text)
set outputPath to quoted form of (outputFolder & pictureName & ".icns")
do shell script "iconutil -c icns -o " & outputPath & " " & iconsetPath
end tell
on makeFileNameFromSize(s, x2)
set fileName to "icon_" & s & "x" & s
if x2 then set fileName to fileName & "@2x"
set fileName to fileName & ".png"
return fileName
end makeFileNameFromSize
Предостережения:
- Это помещает файл icns на рабочий стол;это можно изменить, изменив переменную
outputFolder
. - Это может вызвать ошибку, если в имени файла изображения есть символы, которые оболочка интерпретирует как значимые. Я заметил это в имени файла с круглыми скобками, но не добавил никакой проверки ошибок.
- Этот скрипт не сохраняет пропорции, поэтому, если вы передадите ему изображение, которое не квадратное, оно будет искажать. Если вы хотите сохранить пропорции, помните, что значки должны быть квадратными, поэтому сначала придется обрезать изображение, обрезая его или отступая.