Как я могу дать команду Automator преобразовать несколько изображений из PNG в ICNS за один раз?
Я использую OS X Mountain 10.8.2.
Я использовал Automator и добавил AppleScript, скопировав команду от разработчика старого приложения на Iconoodle - Удобное преобразование ICNS в PNG (Iconoodle не поддерживается OS X 10.8, будучи приложением PPC). Я сохранил рабочий процесс как приложение. Я выбрал изображения и поместил их в приложение, но изображения не были преобразованы в ICNS. Я также скопировал из вопроса " Преобразовать изображение в файл.icns AppleScript Obj-C", и он тоже не работал.
Я действительно расстроен этим. Я хочу использовать Automator для конвертации нескольких изображений из PNG в ICNS. Очень неприятно конвертировать каждое изображение в ICNS в приложениях редактора иконок, один за одним. Preview.app не хочет преобразовывать изображение в формате PNG в ICNS, поскольку у него есть только одна страница, он может преобразовать его в ICNS, только если на значке много страниц.
Вы знаете, чтобы сделать это?
Спасибо за внимание, помощь и терпение!
2 ответа
Вот другой подход... ПРИМЕЧАНИЕ. Ваши ОРИГИНАЛЬНЫЕ png-файлы будут масштабированы до ожидаемого размера перед созданием файла icns. Если вы хотите сохранить копию оригинального png, сначала продублируйте ее. Вы также можете добавить строку или около того в сценарий, чтобы сделать это автоматически.
property expectedSizes : {16, 32, 48, 128, 256, 512, 1024, 9999999}
set myFiles to choose file with multiple selections allowed
repeat with aFile in myFiles
tell application "System Events" to set bPath to POSIX path of (container of aFile)
set newPath to bPath & "/" & bName(aFile) & ".icns" as text
set aFile to quoted form of (POSIX path of aFile)
set {W, H} to {paragraph 1, paragraph 2} of (do shell script "sips -g pixelWidth -g pixelHeight " & aFile & " | grep -Eo [0-9]*$")
set {W, H} to {W as number, H as number}
if W > H then
set W to eSize(W)
do shell script "sips " & aFile & " -Z " & W & " -p " & W & space & W & " --padColor FFFFFF -i"
delay 1
else if H > W then
set H to eSize(H)
do shell script "sips " & aFile & " -Z " & H & " -p " & H & space & H & " --padColor FFFFFF -i"
delay 1
-- H = W but not in expected sizes
else if H is not in expectedSizes then
set H to eSize(H)
do shell script "sips " & aFile & " -Z " & H & " -p " & H & space & H & " --padColor FFFFFF -i"
delay 1
end if
do shell script "sips -s format icns " & aFile & " --out " & quoted form of newPath
end repeat
on bName(theFile)
tell application "Finder" to set {name:fileName, name extension:nameExtension} to theFile
set baseName to text 1 thru ((get offset of "." & nameExtension in fileName) - 1) of fileName
end bName
on eSize(lDimen)
repeat with i from 1 to 8
if lDimen < item i of expectedSizes then return item (i - 1) of expectedSizes
end repeat
end eSize
Вы по-прежнему можете запустить скрипт iconoodle, просто вставив его в редактор AppleScript. Это просто оболочка для глотков, но она может конвертировать только ICNS в PNG.
Вы можете использовать sips напрямую для преобразования png в icns:
for f in *.png; do sips -s format icns "$f" --out "${f%png}icns"; done