Changeset - 8fa61211042c
[Not reviewed]
0 0 1
Branko Majic (branko) - 4 years ago 2020-06-29 04:16:43
branko@majic.rs
Checked-in a script for resizing images up to a maximum height/width.
1 file changed with 111 insertions and 0 deletions:
0 comments (0 inline, 0 general) First comment
multimedia/imgresize.sh
Show inline comments
 
new file 100755
 
#!/bin/bash
 
#
 
# imgresize.sh
 
#
 
# Copyright (C) 2009, Branko Majic <branko@majic.rs>
 
#
 
# This program is free software: you can redistribute it and/or modify
 
# it under the terms of the GNU General Public License as published by
 
# the Free Software Foundation, either version 3 of the License, or
 
# (at your option) any later version.
 
#
 
# This program is distributed in the hope that it will be useful,
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
# GNU General Public License for more details.
 
#
 
# You should have received a copy of the GNU General Public License
 
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
#
 

	
 
program="imgresize.sh"
 
version="0.2"
 

	
 
function usage() {
 
    cat <<EOF
 
$program $version, a non-interactive utility for resizing the images for upload
 
on websites with limited space.
 

	
 
Usage: $program [OPTIONS] max inputDir outputDir
 

	
 
$program is a non-interactive utility for resizing the JPEG images for upload on
 
websites with limited space. It is basically a wrapper around convert utility
 
from ImageMagick package. All JPEG images within the input directory get
 
resized.
 

	
 
Images with heigth or width bigger than the maximum value specified get resized
 
along the bigger side so that it fits in the specified value. Images that do not
 
exceed the specified maximum value get their quality reduced.
 

	
 
$program accepts the following options:
 

	
 
    -v        show script version and licensing information
 
    -h        show usage help
 

	
 

	
 
Please report bugs and send feature requests to <branko@majic.rs>.
 
EOF
 
}
 

	
 
function version() {
 
        cat <<EOF
 
$program, version $version
 

	
 
+-----------------------------------------------------------------------+
 
| Copyright (C) 2009, Branko Majic <branko@majic.rs>                    |
 
|                                                                       |
 
| This program is free software: you can redistribute it and/or modify  |
 
| it under the terms of the GNU General Public License as published by  |
 
| the Free Software Foundation, either version 3 of the License, or     |
 
| (at your option) any later version.                                   |
 
|                                                                       |
 
| This program is distributed in the hope that it will be useful,       |
 
| but WITHOUT ANY WARRANTY; without even the implied warranty of        |
 
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         |
 
| GNU General Public License for more details.                          |
 
|                                                                       |
 
| You should have received a copy of the GNU General Public License     |
 
| along with this program.  If not, see <http://www.gnu.org/licenses/>. |
 
+-----------------------------------------------------------------------+
 

	
 
EOF
 
}
 

	
 
# If no arguments were given, just show usage help.
 
if [[ -z $1 ]]; then
 
    usage
 
    exit 0
 
fi
 

	
 
# Parse the arguments
 
while getopts "vh" opt; do
 
    case "$opt" in
 
        v) version
 
           exit 0;;
 
        h) usage
 
           exit 0;;
 
        *) usage
 
           exit 1;;
 
    esac
 
done
 
i=$OPTIND
 
shift $(($i-1))
 

	
 
max="$1"
 
inputDir="$2"
 
outputDir="$3"
 

	
 
for file in $(find "$inputDir" -iregex '.*jpg'); do
 
    fileName="$(basename "$file")"
 
    geometry="$(identify "$file" | sed -e "s#$file ##" | awk '{print $2}')"
 
    width="$(echo "$geometry" | sed 's/x.*//')"
 
    height="$(echo "$geometry" | sed 's/.*x//')"
 
    if (( $width > $height && $width > $max )); then
 
        convert -resize $max -quality 85 "$file" "$outputDir/$fileName"
 
    elif (( $height > $width && $height > $max)); then
 
        convert -resize x$max -quality 85 "$file" "$outputDir/$fileName"
 
    else
 
        convert "$file" -quality 85 "$outputDir/$fileName"
 
    fi
 
done
 

	
0 comments (0 inline, 0 general) First comment
You need to be logged in to comment. Login now