GdkPixbuf * file_utils_load_thumbnail (const gchar *filename) { GimpThumbnail *thumbnail = NULL; GdkPixbuf *pixbuf = NULL; gchar *uri; g_return_val_if_fail (filename != NULL, NULL); uri = g_filename_to_uri (filename, NULL, NULL); if (uri) { thumbnail = gimp_thumbnail_new (); gimp_thumbnail_set_uri (thumbnail, uri); pixbuf = gimp_thumbnail_load_thumb (thumbnail, GIMP_THUMBNAIL_SIZE_NORMAL, NULL); } g_free (uri); if (pixbuf) { gint width = gdk_pixbuf_get_width (pixbuf); gint height = gdk_pixbuf_get_height (pixbuf); if (gdk_pixbuf_get_n_channels (pixbuf) != 3) { GdkPixbuf *tmp = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height); gdk_pixbuf_composite_color (pixbuf, tmp, 0, 0, width, height, 0, 0, 1.0, 1.0, GDK_INTERP_NEAREST, 255, 0, 0, GIMP_CHECK_SIZE_SM, 0x66666666, 0x99999999); g_object_unref (pixbuf); pixbuf = tmp; } } return pixbuf; }
static void process_thumbnail (const gchar *filename) { GimpThumbnail *thumbnail; GError *error = NULL; thumbnail = gimp_thumbnail_new (); if (! gimp_thumbnail_set_from_thumb (thumbnail, filename, &error)) { if (option_state == STATE_ERROR) { if (option_verbose) g_print ("%s '%s'\n", filename, error->message); else g_print ("%s\n", filename); } g_clear_error (&error); } else { GimpThumbState state = gimp_thumbnail_peek_image (thumbnail); if ((option_state == STATE_NONE || state == option_state) && (option_path == NULL || strstr (thumbnail->image_uri, option_path))) { if (option_verbose) g_print ("%s '%s'\n", filename, thumbnail->image_uri); else g_print ("%s\n", filename); } #if 0 switch (foo) { case GIMP_THUMB_STATE_REMOTE: g_print ("%s Remote image '%s'\n", filename, thumbnail->image_uri); break; case GIMP_THUMB_STATE_FOLDER: g_print ("%s Folder '%s'\n", filename, thumbnail->image_uri); break; case GIMP_THUMB_STATE_SPECIAL: g_print ("%s Special file '%s'\n", filename, thumbnail->image_uri); break; case GIMP_THUMB_STATE_NOT_FOUND: g_print ("%s Image not found '%s'\n", filename, thumbnail->image_uri); break; case GIMP_THUMB_STATE_OLD: g_print ("%s Thumbnail old '%s'\n", filename, thumbnail->image_uri); break; case GIMP_THUMB_STATE_FAILED: g_print ("%s EEEEEEEEK '%s'\n", filename, thumbnail->image_uri); break; default: g_print ("%s '%s'\n", filename, thumbnail->image_uri); break; } #endif } g_object_unref (thumbnail); }