1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| void open_image()
{
GtkWidget *pImage;
GdkPixbuf *pixbuf;
GError *error = NULL;
dialog = gtk_file_chooser_dialog_new ("Open File",
GTK_WINDOW(pWindow),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{
char *filename;
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
/* Chargement d'une image a partir d'un fichier */
pixbuf = gdk_pixbuf_new_from_file(filename, &error);
if(!error)
{
GdkPixbuf *pixbuf_mini = NULL;
int w = gdk_pixbuf_get_width(pixbuf);
int h = gdk_pixbuf_get_height(pixbuf);
int width, height;
gtk_window_get_default_size (GTK_WINDOW(pWindow), &width, &height);
double W = width * 0.7;
double H = height;
double coeff = 1;
if (w > h) {
coeff = W / w;
}
else {
coeff = H / h;
}
W = w * coeff;
H = h * coeff;
pixbuf_mini = gdk_pixbuf_scale_simple(pixbuf, W, H, GDK_INTERP_NEAREST);
pImage = gtk_image_new_from_pixbuf(pixbuf_mini);
gtk_box_pack_start(GTK_BOX(pVBox), pImage, FALSE, FALSE, 5);
}
else
{
g_critical(error->message);
}
//open_file (filename);
g_free (filename);
}
gtk_widget_destroy (dialog);
} |
Partager