Skip to content

Instantly share code, notes, and snippets.

@marcotrosi
Last active December 29, 2024 21:17
Show Gist options
  • Save marcotrosi/0a1a87e671d89e545dcd to your computer and use it in GitHub Desktop.
Save marcotrosi/0a1a87e671d89e545dcd to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
if [[ -z "$(file -b "${1}" | grep -o '1024 x 1024')" ]] ; then
echo "ensure PNG size is 1024x1024 pixels"
exit 1
fi
TmpDir="/tmp/png2icns.iconset"
mkdir -p "${TmpDir}"
sips -z 16 16 "${1}" --out "${TmpDir}/icon_16x16.png"
sips -z 32 32 "${1}" --out "${TmpDir}/[email protected]"
sips -z 32 32 "${1}" --out "${TmpDir}/icon_32x32.png"
sips -z 64 64 "${1}" --out "${TmpDir}/[email protected]"
sips -z 128 128 "${1}" --out "${TmpDir}/icon_128x128.png"
sips -z 256 256 "${1}" --out "${TmpDir}/[email protected]"
sips -z 256 256 "${1}" --out "${TmpDir}/icon_256x256.png"
sips -z 512 512 "${1}" --out "${TmpDir}/[email protected]"
sips -z 512 512 "${1}" --out "${TmpDir}/icon_512x512.png"
cp "${1}" "${TmpDir}/[email protected]"
iconutil -c icns -o "$(basename "${1}" .png).icns" "${TmpDir}"
rm -r "${TmpDir}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment