Fix #975, #977: Change scripts from /bin/bash to /bin/sh
[geeqie.git] / plugins / export-jpeg / geeqie-export-jpeg
1 #!/bin/sh
2
3 ## @file
4 ## @brief Extract embedded jpegs from a raw file
5 ##
6 ## - Display a list of the embedded files
7 ## - Extract the selected image to a tmp folder
8 ## - If jpgicc is installed, correct for currently selected rendering intent
9 ##  and store in a new file
10 ## - Set Geeqie focus to the newly generated image
11 ##
12
13 if ! [ -x "$(command -v exiv2)" ]
14 then
15         zenity --info --width=300 --height=100 --text="Export jpeg from raw file\n\nexiv2 is not installed" --title="Geeqie export jpeg" 2>/dev/null
16         exit 1
17 fi
18
19 if ! [ -x "$(command -v jpgicc)" ]
20 then
21         zenity --info --width=300 --height=100 --text="Export jpeg from raw file\n\njpgicc is not installed\ncolor corrections will not be made\nYou may install via liblcms2-utils" --title="Geeqie export jpeg" 2>/dev/null
22 fi
23
24 count=$(exiv2 -pp "$1" | wc -l)
25 if [ "$count" -eq 0 ]
26 then
27         zenity --info --width=300 --height=100 --text="Export jpeg from raw file\n\nFile contains no embedded images" --title="Geeqie export jpeg" 2>/dev/null
28         exit 1
29 fi
30
31 IFS='
32 '
33
34 list=$(exiv2 -pp "$1")
35 image_list=""
36 n=1
37
38 for image in $list
39 do
40         if [ "$n" -eq "$count" ]
41         then
42                 image_list="${image_list:+${image_list}}TRUE\n$image\n$n"
43         else
44                 image_list="${image_list:+${image_list}}FALSE\n$image\n$n\n"
45         fi
46         n=$((n + 1))
47 done
48
49 image_selected=$(echo "$image_list" | zenity  --width=500 --height=250 --title="Geeqie export jpeg" --list  --text "Select embedded image" --radiolist  --column "Select" --column "Image" --column "n" --hide-column=3 --print-column=3 2>/dev/null) 
50
51 if [ -n "$image_selected" ]
52 then
53         tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/geeqie.XXXXXXXXXX")
54
55         exiv2 --location "$tmpdir" -ep"$image_selected" "$1"
56
57         render_str=$(geeqie --remote --get-render-intent)
58
59         case $render_str in
60                 "Perceptual" )
61                 render_key=0;;
62                 "Relative Colorimetric" )
63                 render_key=1;;
64                 "Saturation" )
65                 render_key=2;;
66                 "Absolute Colorimetric" )
67                 render_key=3;;
68         esac
69
70         filename=$(basename "$tmpdir/"* ".jpg")
71         if [ -x "$(command -v jpgicc)" ]
72         then
73                 filename_ri="$tmpdir/""$filename""-ri.jpg"
74                 jpgicc -t $render_key "$tmpdir/""$filename"".jpg"  "$filename_ri"
75
76                 rm "$tmpdir/""$filename"".jpg"
77
78                 geeqie --remote view:"$filename_ri"
79         else
80                 geeqie --remote view:"$tmpdir/""$filename"".jpg"
81         fi
82 fi