View Full Version : screenshots on Linux
manpreet
12-26-2003, 01:57 AM
Hi,
Are there are any screenshot tools on Linux that help you to take shots while a demo/game is running?
The one with gimp isn't very convenient I think.
Thanks,
Manpreet.
pkaler
12-27-2003, 09:00 AM
GNOME has a built in Screenshot feature.
I kinda like GIMPs screenshot feature. Timed screenshots work really well for me.
JanHH
01-09-2004, 06:35 PM
ksnapshot
I use good ole `xwd` which can then be read by gimp to convert to your favorite format.
koz
richardve
01-12-2004, 10:15 AM
I always use import (ImageMagick cli tool).
dovkruger
01-17-2004, 06:42 PM
If it's your own code, I have a small routine that will save a snapshot of any openGL window as a .bmp but you have to link it in, so we're not talking about taking a program that you are running and doing it... I build it into all my demos now though, so I can print any time I want.
Originally posted by dovkruger:
If it's your own code, I have a small routine that will save a snapshot of any openGL window as a .bmp but you have to link it in...
sounds good, did you made it already available somewhere? Or do you wanna get dozens of e-mail requests? ;-)
Colossus
01-27-2004, 01:19 AM
Hi,
I found this on the libSDL archive mailing list, maybe is the same routine dovkruger is talking about...
#include <stdlib.h>
#include "SDL.h"
#include "gl.h"
int Screenshot(char *filename)
{
SDL_Surface *screen;
SDL_Surface *temp;
unsigned char *pixels;
int i;
if (!(screen->flags & SDL_OPENGL))
{
SDL_SaveBMP(temp, filename);
return 0;
}
temp = SDL_CreateRGBSurface(SDL_SWSURFACE, screen->w, screen->h, 24,
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
0x000000FF, 0x0000FF00, 0x00FF0000, 0
#else
0x00FF0000, 0x0000FF00, 0x000000FF, 0
#endif
);
if (temp == NULL)
return -1;
pixels = malloc(3 * screen->w * screen->h);
if (pixels == NULL)
{
SDL_FreeSurface(temp);
return -1;
}
glReadPixels(0, 0, screen->w, screen->h, GL_RGB, GL_UNSIGNED_BYTE, pixels);
for (i=0; i<screen->h; i++)
memcpy(((char *) temp->pixels) + temp->pitch * i, pixels + 3*screen->w * (screen->h-i-1), screen->w*3);
free(pixels);
SDL_SaveBMP(temp, filename);
SDL_FreeSurface(temp);
return 0;
}
[This message has been edited by Colossus (edited 01-27-2004).]
Powered by vBulletin® Version 4.2.0 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.