plugins/ufraw/Makefile
plugins/import/Makefile
plugins/geocode-parameters/Makefile
+ plugins/export-jpeg/Makefile
geeqie.spec
])
#FIXME enable or disable individual plugins from configure
-SUBDIRS = rotate symlink ufraw import geocode-parameters
+SUBDIRS = rotate symlink ufraw import geocode-parameters export-jpeg
qq_desktoptemplatedir = $(appdir)
qq_desktoptemplate_DATA = template.desktop
--- /dev/null
+dist_gq_bin_SCRIPTS = geeqie-export-jpeg
+
+gq_desktopdir = $(appdir)/applications
+gq_desktop_in_files = export-jpeg.desktop.in
+gq_desktop_DATA = $(gq_desktop_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = $(gq_desktop_in_files)
+CLEANFILES = $(gq_desktop_DATA)
--- /dev/null
+[Desktop Entry]
+Version=1.0
+Type=Application
+_Name=Export jpeg
+
+Exec=geeqie-export-jpeg %f
+
+# show only if these are installed
+#TryExec=exiv2
+#TryExec=jpgicc
+
+# Desktop files that are usable only in Geeqie should be marked like this:
+Categories=X-Geeqie;
+OnlyShowIn=X-Geeqie;
+
+# It can be made verbose
+#X-Geeqie-Verbose=true
+
+Icon=geeqie
--- /dev/null
+#!/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
}
}
+static void gr_render_intent(const gchar *text, GIOChannel *channel, gpointer data)
+{
+ gchar *render_intent;
+
+ switch (options->color_profile.render_intent)
+ {
+ case 0:
+ render_intent = g_strdup("Perceptual");
+ break;
+ case 1:
+ render_intent = g_strdup("Relative Colorimetric");
+ break;
+ case 2:
+ render_intent = g_strdup("Saturation");
+ break;
+ case 3:
+ render_intent = g_strdup("Absolute Colorimetric");
+ break;
+ default:
+ render_intent = g_strdup("none");
+ break;
+ }
+
+ g_io_channel_write_chars(channel, render_intent, -1, NULL, NULL);
+ g_io_channel_write_chars(channel, "\n", -1, NULL, NULL);
+
+ g_free(render_intent);
+}
+
static void gr_file_tell(const gchar *text, GIOChannel *channel, gpointer data)
{
if (!layout_valid(&lw_id)) return;
{ NULL, "--tell", gr_file_tell, FALSE, FALSE, NULL, N_("print filename of current image") },
{ NULL, "--pixel-info", gr_pixel_info, FALSE, FALSE, NULL, N_("print pixel info of mouse pointer on current image") },
{ NULL, "--get-rectangle", gr_rectangle, FALSE, FALSE, NULL, N_("get rectangle co-ordinates") },
+ { NULL, "--get-render-intent", gr_render_intent, FALSE, FALSE, NULL, N_("get render intent") },
{ NULL, "view:", gr_file_view, TRUE, FALSE, N_("<FILE>"), N_("open FILE in new window") },
{ NULL, "--list-clear", gr_list_clear, FALSE, FALSE, NULL, N_("clear command line collection list") },
{ NULL, "--list-add:", gr_list_add, TRUE, FALSE, N_("<FILE>"), N_("add FILE to command line collection list") },
#!/bin/bash
-version="2018-08-20"
+version="2018-10-14"
description=$'
Geeqie is an image viewer.
This script will download, compile, and install Geeqie on Debian-based systems.
"imagemagick"
"ufraw (for RAW file handling)"
"ufraw"
+"exiv2 command line (for jpeg export)"
+"exiv2"
+"jpgicc (for jpeg export color correction)"
+"liblcms2-utils"
"markdown (for generating README help file)"
"markdown"
)