-
-
Save millipedia/948df70e4004310eb2a9c55735757135 to your computer and use it in GitHub Desktop.
This script will generate all iOS and Android icon files (including retina) using the built-in sips command in OS X. It will also compress the PNGs if ImageOptim is installed. This is based off another awesome Gist found here: https://gist.github.com/jessedc/837916
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 | |
COMPRESS=1 # Compress if ImageOptim is intalled. 0 = disabled; 1 = enabled | |
iOSSubdir="/ios" # make this an empty string to save in same dir | |
androidSubdir="/android" # make this an empty string to save in same dir | |
help() { | |
echo "" | |
echo "Usage: ./$(basename "$0") <your_1024x1024.png>" | |
echo " --------------------------------------------------------------------------------------" | |
echo " If you don't pass a parameter, it will look for a [email protected] in the current" | |
echo " directory. The file needs to be 1024x1024 for the rest of the files to be resized" | |
echo " correctly." | |
echo "" | |
echo " If you want to automatically compress the icons, install ImageOptim." | |
echo " More info here: http://imageoptim.com/" | |
exit | |
} | |
FILEPATH=$1 | |
if [[ ! -f $FILEPATH ]]; then | |
FILEPATH="./[email protected]" | |
fi | |
if [[ ! -f $FILEPATH ]]; then | |
echo "ERROR: Could not find icon file" | |
help | |
fi | |
FILE=$(basename "$FILEPATH") | |
# the root directory is where the icon passed as a parameter lives | |
DIR=$(cd $(dirname "$FILEPATH"); pwd) | |
# make subdirs | |
if [[ $iOSSubdir != "" && ! -d ${DIR}/$iOSSubdir ]]; then mkdir ${DIR}/${iOSSubdir}; fi | |
if [[ $androidSubdir != "" && ! -d ${DIR}/$androidSubdir ]]; then mkdir ${DIR}/${androidSubdir}; fi | |
# iOS App Store Icons | |
if [[ $FILE != "./[email protected]" || $iOSSubdir != "" ]]; then sips --resampleWidth 1024 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/[email protected]" > /dev/null 2>&1; fi | |
sips --resampleWidth 512 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/iTunesArtwork.png" > /dev/null 2>&1 | |
# iOS App Icons | |
sips --resampleWidth 57 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/icon.png" > /dev/null 2>&1 | |
sips --resampleWidth 114 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/[email protected]" > /dev/null 2>&1 | |
sips --resampleWidth 60 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/icon-60.png" > /dev/null 2>&1 | |
sips --resampleWidth 120 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/[email protected]" > /dev/null 2>&1 | |
sips --resampleWidth 180 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/[email protected]" > /dev/null 2>&1 | |
sips --resampleWidth 72 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/icon-72.png" > /dev/null 2>&1 | |
sips --resampleWidth 144 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/[email protected]" > /dev/null 2>&1 | |
sips --resampleWidth 76 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/icon-76.png" > /dev/null 2>&1 | |
sips --resampleWidth 152 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/[email protected]" > /dev/null 2>&1 | |
# iOS Search/Settings | |
sips --resampleWidth 29 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/icon-small.png" > /dev/null 2>&1 | |
sips --resampleWidth 58 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/[email protected]" > /dev/null 2>&1 | |
sips --resampleWidth 40 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/icon-40.png" > /dev/null 2>&1 | |
sips --resampleWidth 80 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/[email protected]" > /dev/null 2>&1 | |
sips --resampleWidth 50 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/icon-50.png" > /dev/null 2>&1 | |
sips --resampleWidth 100 "${DIR}/${FILE}" --out "${DIR}${iOSSubdir}/[email protected]" > /dev/null 2>&1 | |
# Android icons | |
sips --resampleWidth 144 "${DIR}/${FILE}" --out "${DIR}${androidSubdir}/xxhdpi.png" > /dev/null 2>&1 | |
sips --resampleWidth 96 "${DIR}/${FILE}" --out "${DIR}${androidSubdir}/xhdpi.png" > /dev/null 2>&1 | |
sips --resampleWidth 72 "${DIR}/${FILE}" --out "${DIR}${androidSubdir}/hdpi.png" > /dev/null 2>&1 | |
sips --resampleWidth 48 "${DIR}/${FILE}" --out "${DIR}${androidSubdir}/mdpi.png" > /dev/null 2>&1 | |
sips --resampleWidth 36 "${DIR}/${FILE}" --out "${DIR}${androidSubdir}/ldpi.png" > /dev/null 2>&1 | |
echo "Your icons have been created!" | |
# optimize PNGs, if ImageOptim is installed | |
ImageOptim="/Applications/ImageOptim.app/Contents/MacOS/ImageOptim" | |
if [[ $COMPRESS -eq 1 ]]; then | |
if [[ -f $ImageOptim ]]; then | |
echo "Optimizing iOS icons... This is going to take a while..." | |
$($ImageOptim ${DIR}${iOSSubdir}/*) | |
echo "Optimizing Android icons... This is going to take a while..." | |
$($ImageOptim ${DIR}${androidSubdir}/*) | |
echo "" | |
echo "Finished compressing the icon files!" | |
else | |
echo "Skipped compression. To compress the PNGs, install ImageOptim. More info here: http://imageoptim.com/" | |
fi | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Updated paths and filenames to match Cordova app icon example code.