Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1028851
  • 博文数量: 166
  • 博客积分: 10217
  • 博客等级: 上将
  • 技术积分: 2133
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-09 19:45
文章分类

全部博文(166)

文章存档

2012年(3)

2011年(7)

2010年(18)

2009年(59)

2008年(79)

我的朋友

分类: LINUX

2008-06-24 15:53:23

#include
#include
#include
 
#define BUF_SIZE 8192
 
GtkWidget *
load_image (const gchar *uri)
{
       GnomeVFSHandle   *handle;
       GnomeVFSResult    result;
       GdkPixbufLoader  *loader;
       GdkPixbuf        *pixbuf;
       gchar             buffer[BUF_SIZE];
       GnomeVFSFileSize  bytes_read;
 
       result = gnome_vfs_open (&handle, uri, GNOME_VFS_OPEN_READ);
 
       loader = gdk_pixbuf_loader_new ();
 
       while (result == GNOME_VFS_OK) {
               result = gnome_vfs_read (handle, buffer,
                                        BUF_SIZE, &bytes_read);
 
               gdk_pixbuf_loader_write (loader, buffer, bytes_read, NULL);
       }
 
       gdk_pixbuf_loader_close (loader, NULL);
 
       pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
 
       if (!pixbuf) {
               return NULL;
       }
 
       return gtk_image_new_from_pixbuf (pixbuf);
}
 
int
main (int argc, char **argv)
{
       GtkWidget *window;
       GtkWidget *image;
 
       if (argc < 2) {
               g_print ("Run with %s ,<2\n", argv[0]);
               exit (1);
       }
 
       gtk_init (&argc, &argv);
       gnome_vfs_init ();
 
       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
       g_signal_connect (window, "destroy",
                         gtk_main_quit, NULL);
 
       image = load_image (argv[1]);
 
       if (!image) {
               g_print ("Not a valid uri: %s\n", argv[1]);
               return (1);
       }
 
       gtk_container_add (GTK_CONTAINER (window), image);
 
       gtk_widget_show_all (window);
 
       gtk_main ();
 
       return 0;
}

make.sh如下:
#!/bin/bash
gcc `pkg-config --libs --cflags gtk+-2.0 gnome-vfs-2.0` \
      vfs-example.c -o vfs-example
阅读(1884) | 评论(0) | 转发(0) |
0

上一篇:libsettings

下一篇:AT的命令格式

给主人留下些什么吧!~~