aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xicns-millefeuille.sh37
1 files changed, 37 insertions, 0 deletions
diff --git a/icns-millefeuille.sh b/icns-millefeuille.sh
new file mode 100755
index 0000000..e3319a1
--- /dev/null
+++ b/icns-millefeuille.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+# icns-millefeuille.sh
+#
+# Takes an icns file and adds missing @1x and 32px sizes. Creates a new icns
+# file based on the input in the current directory.
+
+EX_USAGE=64
+
+if [ $# -ne 1 ]; then
+ echo >&2 'usage: icns-millefeuille.sh ICNS_FILE'
+ exit $EX_USAGE
+fi
+
+original_icon="$1"
+icon="$(basename "$original_icon")"
+iconset="${icon/.icns/.iconset}"
+
+cp -a "$original_icon" .
+
+iconutil -c iconset "$icon"
+
+cd "$iconset"
+
+cp icon_16x16\@2x.png icon_32x32.png
+
+sips -Z 512 icon_512x512\@2x.png --out icon_512x512.png
+sips -Z 256 icon_256x256\@2x.png --out icon_256x256.png
+sips -Z 128 icon_128x128\@2x.png --out icon_128x128.png
+sips -Z 64 icon_128x128.png --out icon_32x32\@2x.png
+sips -Z 16 icon_16x16\@2x.png --out icon_16x16.png
+
+cd ..
+
+iconutil -c icns "$iconset"
+
+rm -rf "$iconset"