Convert resize photos images – Konwertuj zdjęcia

#!/bin/sh

# Purpose: To convert jpg images,
# convert big pictures from you digital camera to small version
# Howto use: sizeconv.sh <pictures' directory path>
# it's just a sample: ls -1Q *.[Jj][Pp][Gg]
# assumption: photos' extension *.jpg  or *.JPG
# convert_param veriable:
# -option parameter_value
# example:
# -scale 50%
# -resize 150
# -sample 200%

#specify conversion option and value:

convert_param="-resize 600"

# Check, whether Imagemagick is being installed
if [ ! -x /usr/bin/convert ]
then    echo "Imagemagick is not installed"

    if [ -x /usr/bin/apt-get ]
    then     echo; echo "Let's try to install it..."
        sudo apt-get -y install imagemagick
        if [ $? != 0 ]
        then echo "Installation Error... please verify it and try to install imagemagick manualy"; sleep 3; exit
        fi
    else    echo "Package imagemagick must be installed on your system"; sleep 3; exit
    fi
fi

# statemant validation
if [ -z $1 ]
    then
    echo "Target directory not specified"
    echo "Usage: sizeconv.sh <target directory>"
    sleep 1
    exit 1
fi

echo "Eliminate all spaces from the directories and files names"
echo "Processing directories names..."

find $1 -type d -exec rename 's/ /_/g' {} ; > /dev/null 2>&1

echo "Done..."
echo "Processing filenames..."

find $1 -type f -exec rename 's/ /_/g' {} ;

echo "Done..."
sleep 2

#total_files=`find $1 -name '*.[Jj][Pp][Gg]' -print0 | xargs -0 ls -1 |wc -l`
total_files=`find $1 -type f -name '*.[Jj][Pp][Gg]' | grep -v converted_files |wc -l`
dir_list=`find $1 -type d |egrep -v '^.{1,2} |grep -v converted_files`
clear

for z in $dir_list; do
    cd $z
    dir1=`pwd`

    #Check whether any jpg files exist in the directory
    ls -1 *.[Jj][Pp][Gg]  > /dev/null 2>&1
    if [ $? != 0 ]
    then cd - > /dev/null
    continue
    fi

    ls -1 converted_files/*.[Jj][Pp][Gg]  > /dev/null 2>&1
    if [ $? = 0 ]
    then cd - > /dev/null
    continue
    fi

    if [ ! -d converted_files ]
            then mkdir converted_files
    fi

    #let's roll
        nr_of_files=`ls -1 *.[Jj][Pp][Gg] | wc -l` > /dev/null 2>&1
    g=0
    for i in *.[Jj][Pp][Gg]; do
        echo  "<<<< START >>>>"
        h="$(($h + 1))"
        g="$(($g + 1))"
        echo "Converting: [$h from $total_files] in total"
        echo
        echo "Converting $i: [$g from $nr_of_files] within: $dir1"
        convert $i $convert_param converted_files/$i
        clear
    done
    cd - > /dev/null

done

echo ">>>> Work Complete for $1 <<<<"
exit

#End-Script#


By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close