diff --git a/stpkg b/stpkg index 703373bedb21cbdee4c2843b899684d3bffd7f97..19957486deb4e05e0c342b65004ea497e5a773cd 100755 --- a/stpkg +++ b/stpkg @@ -173,6 +173,35 @@ file_get_height() { echo "$HEIGHT" } +__get_dest_dimensions() { + local INIT_WIDTH=$1 + local INIT_HEIGHT=$2 + local MAX_WIDTH=$3 + local MAX_HEIGHT=$3 + + local WIDTH_RATIO="$(echo "scale=10; $INIT_WIDTH/$STPKG_MAX_WIDTH" | bc)" + local HEIGHT_RATIO="$(echo "scale=10; $INIT_HEIGHT/$STPKG_MAX_HEIGHT" | bc)" + + if [ $(echo "$HEIGHT_RATIO >= $WIDTH_RATIO" | bc) = "1" ]; then + if [ $(echo "$HEIGHT_RATIO > 1" | bc) = "1" ]; then + local DEST_HEIGHT=$STPKG_MAX_HEIGHT + local DEST_WIDTH="" + else + local DEST_HEIGHT=$INIT_HEIGHT + local DEST_WIDTH=$INIT_WIDTH + fi + elif [ $(echo "$WIDTH_RATIO > 1" | bc) = "1" ]; then + local DEST_HEIGHT="" + local DEST_WIDTH=$STPKG_MAX_WIDTH + else + local DEST_HEIGHT=$INIT_HEIGHT + local DEST_WIDTH=$INIT_WIDTH + fi + + echo "${DEST_WIDTH}x${DEST_HEIGHT}" +} + + file_get_type() { xdg-mime query filetype "$1"; } file_get_ext() { xdg-mime query filetype "$1" | sed 's+^.*/++'; } file_get_ext_from_type() { echo "$1" | sed 's+^.*/++'; } @@ -550,34 +579,6 @@ __list() { done } -__get_dest_dimensions() { - local INIT_WIDTH=$1 - local INIT_HEIGHT=$2 - local MAX_WIDTH=$3 - local MAX_HEIGHT=$3 - - local WIDTH_RATIO="$(echo "scale=10; $INIT_WIDTH/$STPKG_MAX_WIDTH" | bc)" - local HEIGHT_RATIO="$(echo "scale=10; $INIT_HEIGHT/$STPKG_MAX_HEIGHT" | bc)" - - if [ $(echo "$HEIGHT_RATIO >= $WIDTH_RATIO" | bc) = "1" ]; then - if [ $(echo "$HEIGHT_RATIO > 1" | bc) = "1" ]; then - local DEST_HEIGHT=$STPKG_MAX_HEIGHT - local DEST_WIDTH="" - else - local DEST_HEIGHT=$INIT_HEIGHT - local DEST_WIDTH=$INIT_WIDTH - fi - elif [ $(echo "$WIDTH_RATIO > 1" | bc) = "1" ]; then - local DEST_HEIGHT="" - local DEST_WIDTH=$STPKG_MAX_WIDTH - else - local DEST_HEIGHT=$INIT_HEIGHT - local DEST_WIDTH=$INIT_WIDTH - fi - - echo "${DEST_WIDTH}x${DEST_HEIGHT}" -} - # Usage: process_sticker_file <filename> <&JSON> process_sticker_file() { FILE="$1" @@ -633,12 +634,14 @@ process_sticker_file() { local DEST_TYPE=$STPKG_IMAGE_TARGET_FILETYPE local DEST_EXT=$(file_get_ext_from_type "$DEST_TYPE") + convert "$FILE" -trim "${INIT_EXT}:${TEMP}" + # Get sizes - local INIT_WIDTH=$(file_get_width "$FILE") - local INIT_HEIGHT=$(file_get_height "$FILE") + local INIT_WIDTH=$(file_get_width "$TEMP") + local INIT_HEIGHT=$(file_get_height "$TEMP") local DEST_DIMENSIONS=$(__get_dest_dimensions $INIT_WIDTH $INIT_HEIGHT $STPKG_MAX_WIDTH $STPKG_MAX_HEIGHT) - convert "$FILE" -bordercolor none -border 1 -background none -gravity center -trim +repage -resize ${DEST_DIMENSIONS} "${DEST_EXT}:${TEMP}" 1>&2 \ + convert "$TEMP" -bordercolor none -border 1 -background none -gravity center -trim +repage -resize ${DEST_DIMENSIONS} "${DEST_EXT}:${TEMP}" 1>&2 \ || die "$NAME failed converting the sticker" fi