Skip to content

Commit

Permalink
add png to ico converter shell script for multi-size ico files
Browse files Browse the repository at this point in the history
  • Loading branch information
chrissimpkins committed Apr 25, 2016
1 parent 18b7dea commit 9ce1016
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions img/icoconv.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/bash

# icoconv.sh
# Copyright 2016 Christopher Simpkins
# Adapted from shell script by Denilson Sá at https://superuser.com/questions/40623/icons-command-line-generator#40629
# MIT License

# Dependencies:
# 1. imagemagick (http://www.imagemagick.org/)
# 2. icoutils (http://www.nongnu.org/icoutils/)

# Usage: ./icoconv.sh [png filepath]

if [[ -f "$1" ]]; then
SOURCE="$1"
BASE=`basename "${SOURCE}" .png`
else
echo "[iconconv.sh] ERROR: $1 does not appear to be a valid .png file"
fi

# Resize png image to 16x16 through 256x256 for the ico file
convert "${SOURCE}" -thumbnail 16x16 "${BASE}_16.png"
convert "${SOURCE}" -thumbnail 32x32 "${BASE}_32.png"
convert "${SOURCE}" -thumbnail 48x48 "${BASE}_48.png"
convert "${SOURCE}" -thumbnail 64x64 "${BASE}_64.png"
convert "${SOURCE}" -thumbnail 256x256 "${BASE}_256.png"

if [[ $? -eq 0 ]]; then
echo "Image resizes completed successfully."
else
echo "Image resizes failed."
exit 1
fi

# compile all sizes into the ico file
icotool -c -o "${BASE}.ico" "${BASE}"_{16,32,48,64,256}.png

if [[ $? -eq 0 ]]; then
echo "Successful conversion of '$1' to '${BASE}.ico'"
rm -f "${BASE}"_{16,32,48,64,256}.png
else
echo "Conversion to an ico file failed."
exit 1
fi

0 comments on commit 9ce1016

Please sign in to comment.