Question

With every change to an app icon there is the need to generate the proper icon sizes for Xcode. I've always been looking for an efficient way to generate those icons.

It's obvious that an automated process won't care of pixel fitting or similar details. But a simple AppleScript should do the trick for most of us.

The following screen shows all those sizes needed:

enter image description here

I've gathered different sources and made a simple working script for everyone to share... so here you go – just check my answer below.

Was it helpful?

Solution

Here is a simple AppleScript for all of you... feel free to adapt and use it:

on run
    set f to choose file
    processTheFiles({f})
end run

on open theFiles
    processTheFiles(theFiles)
end open

on processTheFiles(theFiles)
    tell application "Image Events" to launch
    repeat with f in theFiles
        set thisFile to f as text

        -- iPhone       
        scaleAndSave(f, thisFile, 29 * 1, "-iPhone-29")
        scaleAndSave(f, thisFile, 29 * 2, "-iPhone-29@2x")
        scaleAndSave(f, thisFile, 40 * 2, "-iPhone-40@2x")
        scaleAndSave(f, thisFile, 57 * 1, "-iPhone-57")
        scaleAndSave(f, thisFile, 57 * 2, "-iPhone-57@2x")
        scaleAndSave(f, thisFile, 60 * 2, "-iPhone-60@2x")

        -- iPad
        scaleAndSave(f, thisFile, 29 * 1, "-iPad-29")
        scaleAndSave(f, thisFile, 29 * 2, "-iPad-29@2x")
        scaleAndSave(f, thisFile, 40 * 1, "-iPad-40")
        scaleAndSave(f, thisFile, 40 * 2, "-iPad-40@2x")
        scaleAndSave(f, thisFile, 50 * 1, "-iPad-50")
        scaleAndSave(f, thisFile, 50 * 2, "-iPad-50@2x")
        scaleAndSave(f, thisFile, 72 * 1, "-iPad-72")
        scaleAndSave(f, thisFile, 72 * 2, "-iPad-72@2x")
        scaleAndSave(f, thisFile, 76 * 1, "-iPad-76")
        scaleAndSave(f, thisFile, 76 * 2, "-iPad-76@2x")

    end repeat
    tell application "Image Events" to quit
end processTheFiles

on scaleAndSave(aPath, aFile, aSize, aName)
    set savePath to text 1 thru -5 of aFile & aName & text -4 thru -1 of aFile
    tell application "Image Events"
        set a to open aPath
        scale a to size aSize
        save a in savePath
    end tell
    delay 0.2
end scaleAndSave

Here is the same as a file... just download, save, double click and run: https://dl.dropboxusercontent.com/u/170740/AppIcon.applescript

I hope, this saves you some time...

OTHER TIPS

This will generate icons needed for ios 10 and 11:

sips --resampleWidth 167 icon1024.png --out icon167.png
sips --resampleWidth 152 icon1024.png --out icon152.png
sips --resampleWidth 76 icon1024.png --out icon76.png
sips --resampleWidth 80 icon1024.png --out icon80.png
sips --resampleWidth 40 icon1024.png --out icon40.png
sips --resampleWidth 58 icon1024.png --out icon58.png
sips --resampleWidth 29 icon1024.png --out icon29.png
sips --resampleWidth 20 icon1024.png --out icon20.png
sips --resampleWidth 180 icon1024.png --out icon180.png
sips --resampleWidth 120 icon1024.png --out icon120.png
sips --resampleWidth 87 icon1024.png --out icon87.png
sips --resampleWidth 60 icon1024.png --out icon60.png

Just open terminal in directory with icon1024.png and paste what is above to generate all needed icons.

I have done a shell script that I added as a build script to one of my projects. It generates all icons from the biggest one:

# Generate all icon files from Icon_1024.png

#smaller app store icon
sips --resampleWidth 512 Icon_1024.png --out Icon_512.png

#iphone icons
sips --resampleWidth 114 Icon_1024.png --out Icon\@2x.png
sips --resampleWidth 57 Icon_1024.png --out Icon.png

#ipad icons
sips --resampleWidth 144 Icon_1024.png --out Icon-72\@2x.png
sips --resampleWidth 72 Icon_1024.png --out Icon-72.png
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top