annotate plugins/image-crop/geeqie-image-crop @ 2858:4c7dd47bbcd6

Plugin for image crop Requires ImageMagick and exiftool
author Colin Clark <colin.clark@cclark.uk>
date Sat, 27 Oct 2018 12:40:59 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2858
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
1 #!/bin/bash
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
2
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
3 # Crop image
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
4 #
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
5 # Requires ImageMagick and exiftool
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
6
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
7
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
8 process_raw ()
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
9 {
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
10 tmpdir=$(mktemp --tmpdir --directory geeqie_crop_image_XXXXXX)
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
11
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
12 list=$(exiv2 -pp "$1")
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
13 if [[ ! -z "$list" ]]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
14 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
15 readarray -t split_list <<<"$list"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
16
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
17 array_length="${#split_list[@]}"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
18 exiv2 -ep"$array_length" "$1" --location "$tmpdir"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
19
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
20 src_filename=$(ls "$tmpdir/")
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
21 filename="${src_filename%.*}"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
22 extension="${src_filename##*.}"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
23 rotation=$(exiftool -Orientation -n "$1" | cut -d':' -f2 | xargs)
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
24 convert "$tmpdir/$src_filename" -crop "$2" "$tmpdir/$filename-crop.$extension"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
25
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
26 exiftool -Orientation=$rotation -n "$tmpdir/$filename-crop.$extension"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
27
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
28 rm "$tmpdir/$src_filename"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
29
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
30 geeqie --remote view:"$tmpdir/$filename-crop.$extension"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
31 res=0
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
32 else
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
33 res=1
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
34 fi
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
35
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
36 return $res
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
37 }
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
38
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
39 process_plain ()
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
40 {
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
41 tmpdir=$(mktemp --tmpdir --directory geeqie_crop_image_XXXXXX)
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
42
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
43 src_filename=$(basename -- "$1")
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
44 filename="${src_filename%.*}"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
45 extension="${src_filename##*.}"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
46 convert "$1" -crop "$2" "$tmpdir/$filename-crop.$extension"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
47 if [ $? = 1 ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
48 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
49 zenity --error --title="$title" --text="Cannot process this file format" --width="$width" --window-icon="$window_icon"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
50 else
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
51 geeqie --remote view:"$tmpdir/$filename-crop.$extension"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
52 fi
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
53 }
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
54
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
55 export window_icon="/usr/local/share/pixmaps/geeqie.png"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
56 export title="Geeqie crop image"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
57 export width="250"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
58
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
59 if [ -x "$(command -v convert)" ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
60 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
61 if [ -x "$(command -v exiftool)" ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
62 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
63
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
64 coords=$(geeqie --remote --get-rectangle)
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
65
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
66 if [ -z "$coords" ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
67 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
68 zenity --error --title="$title" --text="Rectangle coordinates have not been set" --width="$width" --window-icon="$window_icon" 2>/dev/null
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
69 exit 0
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
70 fi
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
71
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
72 filename=$(basename -- "$1")
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
73 extension="${filename##*.}"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
74
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
75 if [ "${extension,,}" = "jpeg" ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
76 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
77 source_file="$1"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
78 process_plain "$1" $coords
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
79 elif [ "${extension,,}" = "jpg" ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
80 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
81 source_file="$1"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
82 process_plain "$1" $coords
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
83 elif [ "${extension,,}" = "png" ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
84 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
85 source_file="$1"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
86 process_plain "$1" $coords
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
87 elif [ "${extension,,}" = "tif" ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
88 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
89 source_file="$1"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
90 process_plain "$1" $coords
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
91 elif [ "${extension,,}" = "tiff" ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
92 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
93 source_file="$1"
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
94 process_plain "$1" $coords
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
95 else
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
96 process_raw "$1" $coords
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
97 if [ $? = 1 ]
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
98 then
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
99 process_plain "$1" $coords
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
100 fi
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
101 fi
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
102 else
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
103 zenity --info --title="$title" --width="$width" --height=100 --text="Crop image\n\nexiftool is not installed" --title="$title" --window-icon="$window_icon" 2>/dev/null
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
104 exit 0
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
105 fi
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
106 else
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
107 zenity --info --title="$title" --width="$width" --height=100 --text="Crop image\n\nImageMagick is not installed" --title="$title" --window-icon="$window_icon" 2>/dev/null
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
108 exit 0
4c7dd47bbcd6 Plugin for image crop
Colin Clark <colin.clark@cclark.uk>
parents:
diff changeset
109 fi