This is e better version of my old 
picture resize script. It uses 
Zenity to ask for the resizing percentage and to show a progress bar while the script is working.
Screenshots
  | 
| Resize Script Enter Percentage | 
  | 
| Resize Script Progress Bar | 
  | 
| Resize Script Work Completed | 
Bash Script
picresize.sh
 1 #!/bin/bash
 2 
 3 
 4 # paths, constants, etc.
 5 PICPATH="$1"
 6 TOTALPICS="$((($# - 1)))"
 7 STEP="$(((100 / $TOTALPICS)))"
 8 PROGR=0
 9 MINSIZE=1
10 MAXSIZE=500
11 
12 # get the new size percentage, check it and set output directory path
13 SIZE=""
14 while [ -z "$SIZE" ] || [[ $SIZE<$MINSIZE ]] || [[ $SIZE>$MAXSIZE ]]; do
15     SIZE="$(zenity --entry --title="Picture Resize" --text="Enter percentage...")"
16 
17     # exit if cancel pressed
18     [[ $? != 0 ]] && exit 0
19 
20     # check range
21     if [[ $SIZE<$MINSIZE ]] || [[ $SIZE>$MAXSIZE ]]; then
22         zenity --error --text="$SIZE% is outside the accepted range: 1% - 500%!"
23     fi
24 done
25 
26 OUTPATH="resize_$SIZE%"
27 
28 # check if output directory exists
29 [ -d "$PICPATH/$OUTPATH" ] || mkdir "$PICPATH/$OUTPATH"
30 shift
31 
32 # convert pics, show progress bar
33 while (( $# )); do
34     convert "$PICPATH/$1" -resize "$SIZE%" "$PICPATH/$OUTPATH/resized_$SIZE%-$1"
35     ((PROGR+=$STEP))
36     echo $PROGR
37     shift
38 done | zenity --progress --title="Picture Resize" --text="working..." --percentage=0 -
39                                  -auto-close
40 
41 # check return value and print message depending on it
42 [[ $? == 0 ]] && zenity --info --title="Picture Resize" --text="All done!" || zenity -
43        -error --text="Canceled!"
Add Thunar Custom Action
Please refer to 
this article for adding a custom action to Thunar.
Here is a screenshot of my custom action for this resizing script.
Note that the bash script needs two 
"thunar arguments" :
- Path to the pictures to be resized -> %d
 
- Pictures list -> %N
 
 
That is really good and informative post, will be sharing it with my friends, may be they will get benefit out of it. Thank you for sharing it with us
ReplyDelete