BobStore/app/tools/svg-to-drawables.sh
Hans-Christoph Steiner 3fcdfe85bb move main project files into standard gradle/Android Studio layout
This makes it a lot easier to setup all the testing stuff.  Mostly,
I'm tired of fighting Android Studio's fragility, so I want to remove
as much non-standardness as possible in the hopes of improving that
situation.

closes #534 https://gitlab.com/fdroid/fdroidclient/issues/534
2016-03-28 12:12:37 +02:00

79 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Originally by https://github.com/vitriolix/storymaker-art/blob/3ee3b4aad8db4fd24290b0173e8129a3d0e5299d/original/convert.sh,
# then modified to make it generic and able to be used by any Android project.
#
# Requires ImageMagick to be installed.
# Some builds of ImageMagick on OSX have problems generating the images correctly.
#
# This script scales and creates images at the correct dpi level for Android.
# When creating svg files set the image size to the size that you want your hdpi images to be.
function usage {
echo $1
echo ""
echo "USAGE: svg-to-drawable.sh svg-image res-directory [manually-scaled-res-directory]"
echo " svg-image Path to the .svg image to convert"
echo " res-directory Usually \"res\" in your android project"
echo " manually-scaled-res-directory Put manually scaled images in this dir, useful for, e.g. differing levels of details"
exit
}
SVG_FILE=$1
OUTPUT_RES_DIR=$2
SCALED_RES_DIR=$3
RES_NORMAL=drawable
RES_XXXHDPI=drawable-xxxhdpi
RES_XXHDPI=drawable-xxhdpi
RES_XHDPI=drawable-xhdpi
RES_HDPI=drawable-hdpi
RES_MDPI=drawable-mdpi
RES_LDPI=drawable-ldpi
if (( $# < 2 ))
then
usage "ERROR: Requires at least svg-image and res-directory to be passed to script"
elif [ ! -d $OUTPUT_RES_DIR ]
then
usage "ERROR: $OUTPUT_RES_DIR is not a directory"
fi
function convert_drawable {
DIR=$1
FILE_PATH=$2
FILE_NAME=`basename $FILE_PATH`
SCALE=$3
PNG_FILE=${FILE_NAME/.svg}.png
DRAWABLE_DIR=$OUTPUT_RES_DIR/$DIR
OUTPUT_PATH=$DRAWABLE_DIR/$PNG_FILE
if [ ! -d $DRAWABLE_DIR ]; then
mkdir $DRAWABLE_DIR
fi
if [ -f $OUTPUT_PATH ]; then
rm $OUTPUT_PATH
fi
INFO=""
if [ -f $SCALED_RES_DIR/$DIR/$FILE_NAME ]; then
INFO=" (Using manually scaled file from $DIR/$FILE_NAME)"
convert -background none $SCALED_RES_DIR/$DIR/$FILE $OUTPUT_PATH || exit
else
INFO=" (Scaled by $SCALE%)"
convert -background none $FILE_PATH[$SCALE%] $OUTPUT_PATH || exit
fi
echo " $OUTPUT_PATH$INFO"
}
echo "Processing $SVG_FILE"
convert_drawable $RES_NORMAL $SVG_FILE 100
convert_drawable $RES_XXXHDPI $SVG_FILE 150
convert_drawable $RES_XXHDPI $SVG_FILE 125
convert_drawable $RES_XHDPI $SVG_FILE 100
convert_drawable $RES_HDPI $SVG_FILE 75
convert_drawable $RES_MDPI $SVG_FILE 50
convert_drawable $RES_LDPI $SVG_FILE 37.5