79 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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
 |