$ cvs co -p screen cvs checkout: Updating screen =================================================================== Checking out screen/Makefile RCS: /home/c-aries/cvs/screen/Makefile,v VERS: 1.2 *************** CC = gcc CFLAGS = -Wall -Werror -Wcast-align -g LDFLAGS = SCREENOBJECT = screen.o GIBLIBCFLAGS = `giblib-config --cflags` GIBLIBLIBS = `giblib-config --libs` all: screen screen: $(SCREENOBJECT) $(CC) $(LDFLAGS) $(GIBLIBLIBS) $(SCREENOBJECT) -o $@ screen.o: screen.c screen.h $(CC) $(CFLAGS) $(GIBLIBCFLAGS) -c $< clean: rm -f screen *~ *.o a.out clean-media: rm -f *~ *.jpeg .PHONY: all clean =================================================================== Checking out screen/screen.c RCS: /home/c-aries/cvs/screen/screen.c,v VERS: 1.2 *************** #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <giblib/giblib.h> #include "screen.h" void screen_init(struct screen *screen) { screen->display = XOpenDisplay(NULL); if (!screen->display) { perror("XOpenDisplay"); exit(EXIT_FAILURE); } screen->screen = ScreenOfDisplay(screen->display, DefaultScreen(screen->display)); screen->visual = DefaultVisual(screen->display, DefaultScreen(screen->display)); screen->colormap = DefaultColormap(screen->display, DefaultScreen(screen->display)); screen->root = RootWindow(screen->display, DefaultScreen(screen->display)); imlib_context_set_display(screen->display); imlib_context_set_visual(screen->visual); imlib_context_set_colormap(screen->colormap); } int main(int argc, char *argv[]) { struct screen screen; Imlib_Image image; screen_init(&screen); image = gib_imlib_create_image_from_drawable(screen.root, 0, 0, 0, screen.screen->width, screen.screen->height, 1); imlib_context_set_image(image); imlib_image_set_format("jpeg"); imlib_save_image("screen.jpeg"); imlib_free_image(); exit(EXIT_SUCCESS); } =================================================================== Checking out screen/screen.h RCS: /home/c-aries/cvs/screen/screen.h,v VERS: 1.1.1.1 *************** #ifndef SCREEN_H #define SCREEN_H #include <X11/Xlib.h> struct screen { Display *display; Screen *screen; Visual *visual; Colormap colormap; Window root; }; void screen_init(struct screen *screen); #endif $ |
imlib2
[火星人 ] 使用imlib2函數庫實現截屏功能已經有377次圍觀