Estoy usando ScreenUtils.getFrameBufferPixels(...)
para tomar una captura de pantalla de la pantalla del juego. Quiero guardar la matriz de bytes devuelta por este método como una imagen en el archivo. Estoy usando libGDX y mi enfoque en Android.usando ScreenUtils para guardar la captura de pantalla como imagen en libgdx
Respuesta
Ahora es bastante fácil. Libgdx proporciona un example.
Tuve que agregar una declaración para que funcione. La imagen no se pudo guardar directamente en /screenshot1.png
. Simplemente anteponga Gdx.files.getLocalStoragePath()
. Código
Fuente:
public class ScreenshotFactory {
private static int counter = 1;
public static void saveScreenshot(){
try{
FileHandle fh;
do{
fh = new FileHandle(Gdx.files.getLocalStoragePath() + "screenshot" + counter++ + ".png");
}while (fh.exists());
Pixmap pixmap = getScreenshot(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false);
PixmapIO.writePNG(fh, pixmap);
pixmap.dispose();
}catch (Exception e){
}
}
private static Pixmap getScreenshot(int x, int y, int w, int h, boolean yDown){
final Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(x, y, w, h);
if (yDown) {
// Flip the pixmap upside down
ByteBuffer pixels = pixmap.getPixels();
int numBytes = w * h * 4;
byte[] lines = new byte[numBytes];
int numBytesPerLine = w * 4;
for (int i = 0; i < h; i++) {
pixels.position((h - i - 1) * numBytesPerLine);
pixels.get(lines, i * numBytesPerLine, numBytesPerLine);
}
pixels.clear();
pixels.put(lines);
}
return pixmap;
}
}
tuve buena suerte con el codificador PNG mínima proporcionada por un miembro del foro libgdx aquí: http://www.badlogicgames.com/forum/viewtopic.php?p=8358#p8358
Tenga en cuenta que los archivos PNG resultantes no están optimizados, como el codificador es muy simplista (utilicé pngcrush fuera de línea para reducir su tamaño dramáticamente).
También tuve algunos problemas con el canal alfa. El color de la pantalla subyacente se muestra a través de píxeles transparentes en la pantalla, pero no aparece en los píxeles extraídos de la pantalla (así que esto no es realmente culpa del codificador PNG). Si el fondo es negro, solo asegúrate de que el canal alfa tenga 1.0 en los píxeles (a menos que quieras la transparencia en la captura de pantalla, por supuesto).
- 1. captura de usuario div como imagen y guardar en computadora
- 2. aplicación libgdx y android. Imagen como fondo
- 3. Guardar tabla HTML como imagen
- 4. Compilar/Guardar/Exportar HTML como una imagen PNG usando Jquery
- 5. Resolución de pantalla completa en Android para juegos libgdx
- 6. Cómo guardar una imagen seleccionando "guardar imagen como ..." en un menú contextual usando Selenium Webdriver (Python)
- 7. Pantalla de captura
- 8. Captura de pantalla de la pantalla actual
- 9. Captura de la salida de Isgl3d como imagen
- 10. Imagen de captura de pantalla en C++ en OSX
- 11. Captura de pantalla de la segunda pantalla
- 12. Superposición de pantalla para la captura de pantalla
- 13. Guardar una página web como imagen
- 14. Cómo guardar una cadena base64 como una imagen usando ruby
- 15. Captura de pantalla Circumvent para iOS 4
- 16. capturar la captura de pantalla utilizando .NET
- 17. Recomendación para la captura de video en pantalla para demostraciones
- 18. Simulando la captura de pantalla como una cámara web?
- 19. Captura de pantalla en Haskell?
- 20. La captura de pantalla COCOS 2D es negra en Android
- 21. Guardar como una imagen png en Android
- 22. HTML5 video captura de pantalla
- 23. Captura de pantalla durante la prueba
- 24. Android tome la captura de pantalla programáticamente
- 25. Impedir la captura de pantalla con DirectX
- 26. Herramienta de captura de pantalla para BlackBerry?
- 27. ¿Cómo guardar el objeto gráfico como imagen en C#?
- 28. Captura de pantalla en android
- 29. ¿Cómo subir una captura de pantalla usando html2canvas?
- 30. Guardar wpf ver como imagen, preferiblemente .png
libgdx ahora soporta de forma nativa guardar archivos PNG, consulte el método 'PixmapIO.writePNG': http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/ gdx/graphics/PixmapIO.html # writePNG (com.badlogic.gdx.files.FileHandle, com.badlogic.gdx.graphics.Pixmap) –