Mac
Generate iOS/macOS/watchOS App Icon without software or online tools.
You might have installed application like Prepo. But there are not all icon I needed. There are other application too but was paid. Just for this, I wanted to do it free. Are you searching free too? Well, you are the right place. I will show you free version and do some modification as you needed.
Steps
- Copy this code
#!/bin/bash
set -e
spushd() {
pushd "$1" 2>&1> /dev/null
}
spopd() {
popd 2>&1> /dev/null
}
info() {
local green="\033[1;32m"
local normal="\033[0m"
echo -e "[${green}INFO${normal}] $1"
}
cmdcheck() {
command -v $1>/dev/null 2>&1 || { error >&2 "Please install command $1 first."; exit 1; }
}
error() {
local red="\033[1;31m"
local normal="\033[0m"
echo -e "[${red}ERROR${normal}] $1"
}
warn() {
local yellow="\033[1;33m"
local normal="\033[0m"
echo -e "[${yellow}WARNING${normal}] $1"
}
yesno() {
while true;do
read -p "$1 (y/n)" yn
case $yn in
[Yy]) $2;break;;
[Nn]) exit;;
*) echo 'please enter y or n.'
esac
done
}
curdir() {
if [ ${0:0:1} = '/' ] || [ ${0:0:1} = '~' ]; then
echo "$(dirname $0)"
elif [ -L $0 ];then
name=`readlink $0`
echo $(dirname $name)
else
echo "`pwd`/$(dirname $0)"
fi
}
myos() {
echo `uname|tr "[:upper:]" "[:lower:]"`
}
#########################################
### GROBLE DEFINE ###
#########################################
VERSION=2.0.0
AUTHOR=smallmuou
MODIFIED=immortalsantee
#########################################
### ARG PARSER ###
#########################################
usage() {
prog=`basename $0`
cat << EOF
$prog version $VERSION by $AUTHOR modified by $MODIFIED
USAGE: $prog [OPTIONS] srcfile dstpath
DESCRIPTION:
This script aim to generate iOS/macOS/watchOS APP icons more easier and simply.
srcfile - The source png image. Preferably above 1024x1024
dstpath - The destination path where the icons generate to.
OPTIONS:
-h Show this help message and exit
EXAMPLES:
- ./$prog 1024.png ~/123
- sh $prog 1024.png ~/123
- bash $prog 1024.png ~/123
EOF
exit 1
}
while getopts 'h' arg; do
case $arg in
h)
usage
;;
?)
# OPTARG
usage
;;
esac
done
shift $(($OPTIND - 1))
[ $# -ne 2 ] && usage
#########################################
### MAIN ENTRY ###
#########################################
cmdcheck sips
src_file=$1 # source path
dst_path=$2 # destination path
# check source file
[ ! -f "$src_file" ] && { error "The source file $src_file does not exist, please check it."; exit -1; }
# check width and height of source file provided
src_width=`sips -g pixelWidth $src_file 2>/dev/null|awk '/pixelWidth:/{print $NF}'`
src_height=`sips -g pixelHeight $src_file 2>/dev/null|awk '/pixelHeight:/{print $NF}'`
[ -z "$src_width" ] && { error "The source file $src_file is not a image file, please check it."; exit -1; }
if [ $src_width -ne $src_height ];then
warn "The height and width of the source image are different, will cause image deformation."
fi
# create dst directory
[ ! -d "$dst_path" ] && mkdir -p "$dst_path"
# ios sizes refer to https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/app-icon/
# macos sizes refer to https://developer.apple.com/design/human-interface-guidelines/macos/icons-and-images/app-icon/
# watchos sizes refer to https://developer.apple.com/design/human-interface-guidelines/watchos/icons-and-images/home-screen-icons/
#
#
# name size
sizes_mapper=`cat << EOF
Icon-16 16
Icon-16@2x 32
Icon-32 32
Icon-32@2x 64
Icon-128 128
Icon-128@2x 256
Icon-256 256
Icon-256@2x 512
Icon-512 512
Icon-512@2x 1024
Icon-20 20
Icon-20@2x 40
Icon-20@3x 60
Icon-29 29
Icon-29@2x 58
Icon-29@3x 87
Icon-40 40
Icon-40@2x 80
Icon-40@3x 120
Icon-60@2x 120
Icon-60@3x 180
Icon-76 76
Icon-76@2x 152
Icon-83.5@2x 167
Icon-1024 1024
Icon-24@2x 48
Icon-27.5@2x 55
Icon-86@2x 172
Icon-98@2x 196
Icon-108@2x 216
Icon-44@2x 88
Icon-50@2x 100
EOF`
OLD_IFS=$IFS
IFS=$'\n'
srgb_profile='/System/Library/ColorSync/Profiles/sRGB Profile.icc'
for line in $sizes_mapper
do
name=`echo $line|awk '{print $1}'`
size=`echo $line|awk '{print $2}'`
info "Generate $name.png ..."
if [ -f $srgb_profile ];then
sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z $size $size $src_file --out $dst_path/$name.png >/dev/null 2>&1
else
sips -z $size $size $src_file --out $dst_path/$name.png >/dev/null
fi
done
info "Congratulation. All icons for iOS/macOS/watchOS APP are generate to the directory: $dst_path."
IFS=$OLD_IFS
- Once you copy the code, open terminal and enter following command.
nano /usr/local/bin/smicon
- You will see old fashioned text editor. Just press
command+vto paste the code. - After pasting the code, follow these steps.
- Press
control+x - Press
y - Press
enter
- Press
Now you can execute smicon command from anywhere. This means, you have installed the app. here are the steps to create app icon.
- cd directory/to/your/appicon/folder
bash smicon app.png ./- ./ is your destination path. It will generate files in current folder.
- You can also type
smicon app.png ./convert- ./convert creates a folder with name
convert.
- ./convert creates a folder with name

If you want to add new sizes you can add as shown in image.

And boom🤯💥. That’s all. Let me know if you find any issue. I will help you. 👽.
Thanks
Santosh Maharjan
0
Tags :