#!/bin/bash # Extract emdedded jpegs from a raw file: # # Display a list of the embedded files # Extract the selected image to a tmp folder # If jpgicc is installed, correct for currently selected rendering intent # and store in a new file # Set Geeqie focus to the newly generated image count=$(exiv2 -pp "$1" | wc -l) if [[ $count -eq 0 ]] then 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 exit fi if ! [ -x "$(command -v exiv2)" ] then zenity --info --width=300 --height=100 --text="Export jpeg from raw file\n\nexiv2 is not installed" --title="Geeqie export jpeg" 2>/dev/null exit 1 fi if ! [ -x "$(command -v jpgicc)" ] then 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 fi list=$(exiv2 -pp "$1") readarray -t split_list <<<"$list" image_list="" n=1 for image in "${split_list[@]}" do if [[ $n -eq $count ]] then image_list="$image_list"$'TRUE\n'"$image"$'\n'"$n" else image_list="$image_list"$'FALSE\n'"$image"$'\n'"$n"$'\n' fi n=$((n+1)) done 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) if [[ ! -z "$image_selected" ]] then tmpdir=$(mktemp --tmpdir --directory geeqie_export_jpeg_XXXXXX) exiv2 -ep"$image_selected" "$1" --location "$tmpdir" render_str=$(geeqie --remote --get-render-intent) case $render_str in "Perceptual" ) render_key=0;; "Relative Colorimetric" ) render_key=1;; "Saturation" ) render_key=2;; "Absolute Colorimetric" ) render_key=3;; esac filename=$(basename "$tmpdir/"* ".jpg") if [ -x "$(command -v jpgicc)" ] then filename_ri="$tmpdir/""$filename""-ri.jpg" jpgicc -t $render_key "$tmpdir/""$filename"".jpg" "$filename_ri" rm "$tmpdir/""$filename"".jpg" geeqie --remote view:"$filename_ri" else geeqie --remote view:"$tmpdir/""$filename"".jpg" fi fi