-
-
Save kyawkyaw/e34dd4c63bdeadfe3a91d355edbfe8d3 to your computer and use it in GitHub Desktop.
Generate app icons and xcassets file from a single image. To use this, place script in `appname` folder inside your project (i.e. the folder that Xcode generates for you containing your source code, it's named after whatever you called the app). Create folder there called `RawImages`. Source icon should 1024x1024 and be called appIcon.png. If th…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash -e | |
# -------------------------------------------------------- | |
# Generate app icons and xcassets file from a single image | |
# Ben Clayton, Calvium Ltd. | |
# https://gist.github.com/benvium/2be6d673aa9ac284bb8a | |
# -------------------------------------------------------- | |
# | |
# Usage with an input of 1024x1024 PNG file | |
# generateAppIcon.sh AppIcon.png | |
# | |
# Updated in October 2017 for RobLabs.com | |
# https://gist.github.com/roblabs/527458cbe46b0483cd2d594c7b9e583f | |
# Based on Xcode Version 9.0 (9A235) | |
# requires imagemagick | |
# `brew install imagemagick` | |
sourceIconName=$1 | |
# Ensure we're running in location of script. | |
#cd "`dirname $0`" | |
# Check imagemagick is installed | |
# http://stackoverflow.com/questions/592620/check-if-a-program-exists-from-a-bash-script | |
command -v convert >/dev/null 2>&1 || { echo >&2 "I require imagemagick but it's not installed. Aborting."; exit 1; } | |
iconPath="./Assets.xcassets/AppIcon.appiconset" | |
mkdir -p "$iconPath" | |
# iPhone Notification | |
convert $sourceIconName -resize 40x40 $iconPath/[email protected] | |
convert $sourceIconName -resize 60x60 $iconPath/[email protected] | |
# iPhone Spotlight Settings | |
convert $sourceIconName -resize 29x29 $iconPath/iPhone-Spotlight-Settings-29pt.png | |
convert $sourceIconName -resize 58x58 $iconPath/[email protected] | |
convert $sourceIconName -resize 87x87 $iconPath/[email protected] | |
# iPhone Spotlight | |
convert $sourceIconName -resize 80x80 $iconPath/[email protected] | |
convert $sourceIconName -resize 120x120 $iconPath/[email protected] | |
# iPhone App | |
convert $sourceIconName -resize 120x120 $iconPath/[email protected] | |
convert $sourceIconName -resize 180x180 $iconPath/[email protected] | |
# iPad Notifications | |
convert $sourceIconName -resize 20x20 $iconPath/iPad-Notifications-20pt.png | |
convert $sourceIconName -resize 40x40 $iconPath/[email protected] | |
# iPad Settings | |
convert $sourceIconName -resize 29x29 $iconPath/iPad-Settings-29pt.png | |
convert $sourceIconName -resize 58x58 $iconPath/[email protected] | |
# iPad Spotlight | |
convert $sourceIconName -resize 40x40 $iconPath/iPad-Spotlight-40pt.png | |
convert $sourceIconName -resize 80x80 $iconPath/[email protected] | |
# iPad App | |
convert $sourceIconName -resize 76x76 $iconPath/iPad-App-76pt.png | |
convert $sourceIconName -resize 152x152 $iconPath/[email protected] | |
# iPad Pro App | |
convert $sourceIconName -resize 167x167 $iconPath/[email protected] | |
# iOS Marketing | |
convert $sourceIconName -resize 1024x1024 $iconPath/[email protected] | |
cat > "$iconPath/Contents.json" << EOF | |
{ | |
"images": [ | |
{ | |
"size": "20x20", | |
"idiom": "iphone", | |
"filename": "[email protected]", | |
"scale": "2x" | |
}, | |
{ | |
"size": "20x20", | |
"idiom": "iphone", | |
"filename": "[email protected]", | |
"scale": "3x" | |
}, | |
{ | |
"size": "29x29", | |
"idiom": "iphone", | |
"filename": "iPhone-Spotlight-Settings-29pt.png", | |
"scale": "1x" | |
}, | |
{ | |
"size": "29x29", | |
"idiom": "iphone", | |
"filename": "[email protected]", | |
"scale": "2x" | |
}, | |
{ | |
"size": "29x29", | |
"idiom": "iphone", | |
"filename": "[email protected]", | |
"scale": "3x" | |
}, | |
{ | |
"size": "40x40", | |
"idiom": "iphone", | |
"filename": "[email protected]", | |
"scale": "2x" | |
}, | |
{ | |
"size": "40x40", | |
"idiom": "iphone", | |
"filename": "[email protected]", | |
"scale": "3x" | |
}, | |
{ | |
"size": "60x60", | |
"idiom": "iphone", | |
"filename": "[email protected]", | |
"scale": "2x" | |
}, | |
{ | |
"size": "60x60", | |
"idiom": "iphone", | |
"filename": "[email protected]", | |
"scale": "3x" | |
}, | |
{ | |
"size": "20x20", | |
"idiom": "ipad", | |
"filename": "iPad-Notifications-20pt.png", | |
"scale": "1x" | |
}, | |
{ | |
"size": "20x20", | |
"idiom": "ipad", | |
"filename": "[email protected]", | |
"scale": "2x" | |
}, | |
{ | |
"size": "29x29", | |
"idiom": "ipad", | |
"filename": "iPad-Settings-29pt.png", | |
"scale": "1x" | |
}, | |
{ | |
"size": "29x29", | |
"idiom": "ipad", | |
"filename": "[email protected]", | |
"scale": "2x" | |
}, | |
{ | |
"size": "40x40", | |
"idiom": "ipad", | |
"filename": "iPad-Spotlight-40pt.png", | |
"scale": "1x" | |
}, | |
{ | |
"size": "40x40", | |
"idiom": "ipad", | |
"filename": "[email protected]", | |
"scale": "2x" | |
}, | |
{ | |
"size": "76x76", | |
"idiom": "ipad", | |
"filename": "iPad-App-76pt.png", | |
"scale": "1x" | |
}, | |
{ | |
"size": "76x76", | |
"idiom": "ipad", | |
"filename": "[email protected]", | |
"scale": "2x" | |
}, | |
{ | |
"size": "83.5x83.5", | |
"idiom": "ipad", | |
"filename": "[email protected]", | |
"scale": "2x" | |
}, | |
{ | |
"size": "1024x1024", | |
"idiom": "ios-marketing", | |
"filename": "[email protected]", | |
"scale": "1x" | |
} | |
], | |
"info": { | |
"version": 1, | |
"author": "xcode" | |
}, | |
"properties": { | |
"pre-rendered": true | |
} | |
} | |
EOF |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment