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