Ver la versión completa : [Programacion] Capturar pantalla de una aplicacion
Buenas:
Necesito implementar la función de crear Sreenshots en una aplicación que estoy haciendo y no tengo ni idea. La cosa seria pulsar una tecla y capturar el contenido de pantalla que esta mostrando la aplicación.
Qué usais vosotros para hacer eso?? (alguna libreria, trozo de código...). Uso C bajo Linux.
Somebody help me??? :D
Un saludo
:brindis:
< - >
Un pequeño :arriba:
< - >
No me puedo creer que con tantos programadores que hay por aqui nadie sepa algo :(
Hago un ultimo :arriba:
DarkDijkstra
26/09/2007, 16:07
Supongo que el programa implicará interfaz gráfica y tal... y ya que dices C y linux apostaría por GTK y tal, pero vamos, podrías especificar un pelin más que estas usando y que necesitas?
Siempre puedes ejecutar xwd que captura la pantalla en entornos de X-Window (da igual que tengas KDE, Gnome, XFCE...) es un comando del sistema, pero podrías meterlo en tu código con un simple "system"
http://www.xfree86.org/current/xwd.1.html (pagina del manual)
asi, simplemente con un
system("xwd <parámetros>");
lo tendrías, eso si, los parámetros tocará investigarlos un poquito ; )
Supongo que el programa implicará interfaz gráfica y tal... y ya que dices C y linux apostaría por GTK y tal, pero vamos, podrías especificar un pelin más que estas usando y que necesitas?
Siempre puedes ejecutar xwd que captura la pantalla en entornos de X-Window (da igual que tengas KDE, Gnome, XFCE...) es un comando del sistema, pero podrías meterlo en tu código con un simple "system"
http://www.xfree86.org/current/xwd.1.html (pagina del manual)
asi, simplemente con un
system("xwd <parámetros>");
lo tendrías, eso si, los parámetros tocará investigarlos un poquito ; )
La aplicacion es en OpenGL. Es un Pseudo-editor 3D. Lo que me gustaria es implementar la tipica opcion de sacar un screenshot .png (o .gif o lo que sea) del contenido del editor (pulsando una tecla, por ejemplo).
La idea es que sea lo mas portable posible (aunque si no queda mas remedio, tiraría para Linux más que para Windows).
Muchas gracias por tu respuesta.
Un saludo
:brindis:
DarkDijkstra
26/09/2007, 16:23
Hombre, siempre puedes coger "a pelo" la memoria de vídeo (no se como estarás trabajando con OpenGL exactamente, pero seguro que puedes obtener un puntero al framebuffer de la ventana, asumiendo que crees una ventana y "pintes" todo dentro de ella con llamadas a OpenGL) y volcarla a un fichero, eso si, estaría en formato "raw", lo mejor sería usar alguna librería gráfica más o menos estándar para grabar esa información en formato png o lo que sea...
¿por casualidad estás usando SDL o algo similar?
Hombre, siempre puedes coger "a pelo" la memoria de vídeo (no se como estarás trabajando con OpenGL exactamente, pero seguro que puedes obtener un puntero al framebuffer de la ventana, asumiendo que crees una ventana y "pintes" todo dentro de ella con llamadas a OpenGL) y volcarla a un fichero, eso si, estaría en formato "raw", lo mejor sería usar alguna librería gráfica más o menos estándar para grabar esa información en formato png o lo que sea...
¿por casualidad estás usando SDL o algo similar?
Ahi es donde tengo el problema. El framebuffer no se convertirlo a un formato "conocido" (.gif, .png, .jpg ...), por eso preguntaba :D
No uso SDL. Solo C y Glut/OGL. De todas formas, si hay algo que se pueda hacer con SDL, comentalo por que, la verdad, es que estoy algo desesperadillo ya [wei6]
Un saludo
:brindis:
DarkDijkstra
26/09/2007, 18:37
Hombre, hace un montón que no programo nada con SDL, pero puedes hacer cosas con OpenGL y SDL se encarga del "trabajo sucio" con la gestión de ventanas, ratón, etc (lo que ahora harás con Glut).
La verdad es que a mi me parece más amigable que Glut, y la ventaja es que tiene muchas funciones para cargar / grabar imágenes y como todo en el fondo son "surfaces" (tanto una imágen, como el framebuffer y tal) no deberías tener mucho problema con lo que necesitas.
Pero vamos, es mi consejo, si llevas el proyecto muy avanzado y cambiarlo todo te resultaría muy molesto, lo mejor sería buscar alguna librería lo más sencilla posible que sea multiplataforma y te permita escribir a fichero.
O claro, te queda la solución "hardcore" que sería escribir en fichero tu mismo la cabecera de un formato, hacer la conversión de la información, etc etc ; P
Hombre, hace un montón que no programo nada con SDL, pero puedes hacer cosas con OpenGL y SDL se encarga del "trabajo sucio" con la gestión de ventanas, ratón, etc (lo que ahora harás con Glut).
La verdad es que a mi me parece más amigable que Glut, y la ventaja es que tiene muchas funciones para cargar / grabar imágenes y como todo en el fondo son "surfaces" (tanto una imágen, como el framebuffer y tal) no deberías tener mucho problema con lo que necesitas.
Pero vamos, es mi consejo, si llevas el proyecto muy avanzado y cambiarlo todo te resultaría muy molesto, lo mejor sería buscar alguna librería lo más sencilla posible que sea multiplataforma y te permita escribir a fichero.
O claro, te queda la solución "hardcore" que sería escribir en fichero tu mismo la cabecera de un formato, hacer la conversión de la información, etc etc ; P
Gracias por tu aportacion. Voy a ver que hago...
Un saludo
:brindis:
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.