I use OS X Mountain 10.8.2.
I used Automator and added AppleScript, copying the command from the old app's developer at the Iconoodle - Convenient ICNS to PNG image conversion (Iconoodle isn't supported by OS X 10.8 by being a PPC app). I saved the workflow as an application. I selected the images and dropped them into the application, but the images weren't converted to ICNS. I also copied from the question Convert image to .icns file AppleScript Obj-C and it didn't work either.
I'm really frustrated with it. I want to use Automator to convert the multiple images from PNG to ICNS once at all. It's very annoying to convert each image to ICNS in the icon editor applications, one for one. The Preview.app doesn't want to convert the image in format PNG to ICNS because it has only one page, it can convert it to ICNS only if the icon has many pages.
Do you know to make it?
Thank you for your attention, help and patience!
Here is another approach... NOTE: Your ORIGINAL pngs will be scaled to the expected size before the icns file is created. If you want to keep a copy of the original png, duplicate it first. You can also add a line or so to the script to do so automatically.
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