#!/usr/bin/env bash # requires imagemagick and png2icns (usually found in libicns) convert logo.svg logo.png convert \ -density 300 \ -define icon:auto-resize=256,128,96,64,48,32,16 \ -background none \ logo.svg logo.ico # see: https://gist.github.com/plroebuck/af19a26c908838c7f9e363c571199deb icnsfilename="logo" iconsetdirname=$(mktemp -d -t logo-XXXXXXXXXX) sizes=( 16 32 128 256 512 ) #densities=( 72 144 ) densities=( 72 ) for size in "${sizes[@]}" do dimen="${size}x${size}" for density in "${densities[@]}" do if [ "${density}" == "72" ]; then ## std resolution="${dimen}" scale="" else ## hires resolution="$(( $size * 2 ))x$(( $size * 2 ))" scale="@2x" fi pngfilename="${iconsetdirname}/icon_${dimen}${scale}.png" #echo \ convert \ -background "none" \ -density "${density}" \ -resize "${resolution}!" \ -units "PixelsPerInch" \ logo.svg "${pngfilename}" if [ "$?" -ne 0 ]; then echo "error creating icon file: ${pngfilename}" >&2 exit 1 else echo "wrote temp icon file: ${pngfilename}" >&2 fi done done png2icns logo.icns "${iconsetdirname}"/icon_*.png