rendered paste body/USAGE: ./thumbnail 0x0000ea0 128 test.png#include <X11/Xlib.h>#include <Imlib2.h>#include <stdio.h>#include <string.h>int main(int argc, char **argv) { Display *display; XWindowAttributes windowattr; Imlib_Image image; int windowid, thumbwidth, thumbheight, w, h; char *imageformat, *imagepath; if ( argc != 4 ) return 1; sscanf(argv[1], "%x", &windowid); sscanf(argv[2], "%d", &thumbwidth); imagepath = argv[3]; imageformat = strrchr(argv[3], '.'); if ( (display = XOpenDisplay(NULL)) == NULL ) return 1; XGetWindowAttributes(display, windowid, &windowattr); thumbheight = (int)((float)windowattr.height / ((float)windowattr.width/(float)thumbwidth)); imlib_context_set_anti_alias(1); imlib_context_set_display(display); imlib_context_set_visual(DefaultVisual(display, DefaultScreen(display))); imlib_context_set_colormap(DefaultColormap(display, DefaultScreen(display))); imlib_context_set_drawable(windowid); if ( 4*thumbwidth >= windowattr.width || 4*thumbheight >= windowattr.height ) { image = imlib_create_image_from_drawable((Pixmap)0, 0, 0, windowattr.width, windowattr.height, 1); imlib_context_set_image(image); image = imlib_create_cropped_scaled_image(0, 0, windowattr.width, windowattr.height, thumbwidth, thumbheight); } else { image = imlib_create_scaled_image_from_drawable((Pixmap)0, 0, 0, windowattr.width, windowattr.height, 4*thumbwidth, 4*thumbheight, 1, 1); imlib_context_set_image(image); image = imlib_create_cropped_scaled_image(0, 0, 4*thumbwidth, 4*thumbheight, thumbwidth, thumbheight); } imlib_context_set_image(image); w = imlib_image_get_width(); h = imlib_image_get_height(); printf("%d, %d\n", w, h); imlib_image_set_format(imageformat + 1); imlib_save_image(argv[3]); return 0;}