Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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);
}