Last active
October 11, 2017 16:03
-
-
Save mynameismiek/31e8f5c050709a312b997ddc9ab042db to your computer and use it in GitHub Desktop.
shell script for generating iOS and Android icons from source images. It needs Python3 (or virtualenv) and CairoSVG installed to work (http://cairosvg.org/).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
RED_ON='\e[0;31m'; | |
GREEN_ON='\e[0;32m'; | |
YELLOW_ON='\e[0;33m' | |
OFF='\e[0m' | |
# Python 3 Virtual Env !!! replace with your own !!! | |
source ~/Projects/tensorflowp3/bin/activate | |
# Set arguments | |
while getopts "p:i:" opt | |
do | |
case "$opt" in | |
p) PLATFORM=$OPTARG;; | |
i) FILES_STRING=$OPTARG;; | |
esac | |
done | |
if [[ -z "${PLATFORM}" || -z "${FILES_STRING}" ]]; then | |
printf "${RED_ON}MISSING REQUIRED ARGUMENT\n${OFF}" | |
printf "usage: genicons -p platform -i inputfiles\n" | |
printf "\t-p\tplatform: [ios, droid-launch, droid-menu, droid-context, droid-notif]\n" | |
printf "\t-i\tinput files separated by a comma (ex: inputfile1,inputfile2,etc)\n" | |
exit 1 | |
fi | |
FILES=(${FILES_STRING//,/ }) | |
DROID_MDPI=160 | |
DROID_HDPI=240 | |
DROID_XHDPI=320 | |
DROID_XXHDPI=480 | |
DROID_XXXHDPI=640 | |
checkDroidDirs() { | |
if [ ! -d "$1/drawable" ]; then | |
printf "${YELLOW_ON}Making drawable directory...\n${OFF}" | |
mkdir -p "$1/drawable" | |
fi | |
if [ ! -d "$1/drawable-hdpi" ]; then | |
printf "${YELLOW_ON}Making drawable-hdpi directory...\n${OFF}" | |
mkdir -p "$1/drawable-hdpi" | |
fi | |
if [ ! -d "$1/drawable-xhdpi" ]; then | |
printf "${YELLOW_ON}Making drawable-xhdpi directory...\n${OFF}" | |
mkdir -p "$1/drawable-xhdpi" | |
fi | |
if [ ! -d "$1/drawable-xxhdpi" ]; then | |
printf "${YELLOW_ON}Making drawable-xxhdpi directory...\n${OFF}" | |
mkdir -p "$1/drawable-xxhdpi" | |
fi | |
if [ ! -d "$1/drawable-xxxhdpi" ]; then | |
printf "${YELLOW_ON}Making drawable-xxxhdpi directory...\n${OFF}" | |
mkdir -p "$1/drawable-xxxhdpi" | |
fi | |
} | |
for i in "${FILES[@]}" | |
do | |
: | |
# do whatever on $i | |
printf "Converting ${GREEN_ON}${i}\n${OFF}" | |
basepath=$(dirname "${i}") | |
filename="${i%.*}" | |
# Android: Launcher - (PNG) | |
if [ "${PLATFORM}" == "droid-launch" ]; then | |
checkDroidDirs "${basepath}" | |
# mdpi - 48x48 - 160 dpi | |
cairosvg -f png -W 48 -H 48 -d ${DROID_MDPI} $i -o "${basepath}/drawable/launch_${filename}.png" | |
# hdpi - 72x72 - 240 dpi | |
cairosvg -f png -W 72 -H 72 -d ${DROID_HDPI} $i -o "${basepath}/drawable-hdpi/launch_${filename}.png" | |
# xhdpi - 96x96 - 320 dpi | |
cairosvg -f png -W 96 -H 96 -d ${DROID_XHDPI} $i -o "${basepath}/drawable-xhdpi/launch_${filename}.png" | |
# xxhdpi - 144x144 - 480 dpi | |
cairosvg -f png -W 144 -H 144 -d ${DROID_XXHDPI} $i -o "${basepath}/drawable-xxhdpi/launch_${filename}.png" | |
# xxxhdpi - 192x192 - 640 dpi | |
cairosvg -f png -W 192 -H 192 -d ${DROID_XXXHDPI} $i -o "${basepath}/drawable-xxxhdpi/launch_${filename}.png" | |
# Play - 512x512 - 72 dpi | |
cairosvg -f png -W 512 -H 512 -d 72 $i -o "${basepath}/drawable/launch_${filename}_playstore.png" | |
fi | |
# Android: Action, Dialog, Tab (PNG) | |
if [ "${PLATFORM}" == "droid-menu" ]; then | |
checkDroidDirs "${basepath}" | |
# mdpi - 24x24 - 160 dpi | |
cairosvg -f png -W 24 -H 24 -d ${DROID_MDPI} $i -o "${basepath}/drawable/menu_${filename}.png" | |
# hdpi - 36x36 - 240 dpi | |
cairosvg -f png -W 36 -H 36 -d ${DROID_HDPI} $i -o "${basepath}/drawable-hdpi/menu_${filename}.png" | |
# xhdpi - 48x48 - 320 dpi | |
cairosvg -f png -W 48 -H 48 -d ${DROID_XHDPI} $i -o "${basepath}/drawable-xhdpi/menu_${filename}.png" | |
# xxhdpi - 72x72 - 480 dpi | |
cairosvg -f png -W 72 -H 72 -d ${DROID_XXHDPI} $i -o "${basepath}/drawable-xxhdpi/menu_${filename}.png" | |
# xxxhdpi - 96x96 - 640 dpi | |
cairosvg -f png -W 96 -H 96 -d ${DROID_XXXHDPI} $i -o "${basepath}/drawable-xxxhdpi/menu_${filename}.png" | |
fi | |
# Android: Small contextual (PNG) | |
if [ "${PLATFORM}" == "droid-context" ]; then | |
checkDroidDirs "${basepath}" | |
# mdpi - 16x16 - 160 dpi | |
cairosvg -f png -W 16 -H 16 -d ${DROID_MDPI} $i -o "${basepath}/drawable/context_${filename}.png" | |
# hdpi - 24x24 - 240 dpi | |
cairosvg -f png -W 24 -H 24 -d ${DROID_HDPI} $i -o "${basepath}/drawable-hdpi/context_${filename}.png" | |
# xhdpi - 32x32 - 320 dpi | |
cairosvg -f png -W 32 -H 32 -d ${DROID_XHDPI} $i -o "${basepath}/drawable-xhdpi/context_${filename}.png" | |
# xxhdpi - 48x48 - 480 dpi | |
cairosvg -f png -W 48 -H 48 -d ${DROID_XXHDPI} $i -o "${basepath}/drawable-xxhdpi/context_${filename}.png" | |
# xxxhdpi - 64x64 - 640 dpi | |
cairosvg -f png -W 64 -H 64 -d ${DROID_XXXHDPI} $i -o "${basepath}/drawable-xxxhdpi/context_${filename}.png" | |
fi | |
# Android: Notification (PNG) | |
if [ "${PLATFORM}" == "droid-notif" ]; then | |
checkDroidDirs "${basepath}" | |
# mdpi - 22x22 - 160 dpi | |
cairosvg -f png -W 22 -H 22 -d ${DROID_MDPI} $i -o "${basepath}/drawable/notify_${filename}.png" | |
# hdpi - 33x33 - 240 dpi | |
cairosvg -f png -W 33 -H 33 -d ${DROID_HDPI} $i -o "${basepath}/drawable-hdpi/notify_${filename}.png" | |
# xhdpi - 44x44 - 320 dpi | |
cairosvg -f png -W 44 -H 44 -d ${DROID_XHDPI} $i -o "${basepath}/drawable-xhdpi/notify_${filename}.png" | |
# xxhdpi - 66x66 - 480 dpi | |
cairosvg -f png -W 66 -H 66 -d ${DROID_XXHDPI} $i -o "${basepath}/drawable-xxhdpi/notify_${filename}.png" | |
# xxxhdpi - 88x88 - 640 dpi | |
cairosvg -f png -W 88 -H 88 -d ${DROID_XXXHDPI} $i -o "${basepath}/drawable-xxxhdpi/notify_${filename}.png" | |
fi | |
#iOS: SVG -> PDF | |
if [ "${PLATFORM}" == "ios" ]; then | |
if [ ! -d "${basepath}/ios" ]; then | |
printf "${YELLOW_ON}Making iOS folder...\n${OFF}" | |
mkdir -p "${basepath}/ios" | |
fi | |
cairosvg -f pdf $i -o "${basepath}/ios/${filename}.pdf" | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment