Sto usando ScreenUtils.getFrameBufferPixels(...)
per fare uno screenshot della schermata di gioco. Voglio salvare l'array di byte restituito da questo metodo come un'immagine nel file. Sto usando libGDX e il mio obiettivo in Android.utilizzando ScreenUtils per salvare screenshot come immagine in libgdx
risposta
Ora è abbastanza semplice. Libgdx fornisce uno example.
Ho dovuto aggiungere una dichiarazione per farlo funzionare. L'immagine non può essere salvata direttamente su /screenshot1.png
. Semplicemente anticipato Gdx.files.getLocalStoragePath()
. Codice
Fonte:
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;
}
}
ho avuto buona fortuna con l'encoder .PNG minima fornita da un membro del forum libGDX qui: http://www.badlogicgames.com/forum/viewtopic.php?p=8358#p8358
Nota che i PNG risultanti non sono ottimizzati, come l'encoder è molto semplicistico (io ho usato pngcrush offline per ridurre il loro dimensione drammaticamente).
Ho anche avuto qualche problema con il canale alfa. Il colore dello schermo sottostante viene visualizzato attraverso i pixel trasparenti sullo schermo, ma non viene attraversato dai pixel raschiati dallo schermo (quindi questo non è proprio il difetto dell'encoder PNG). Se il tuo sfondo è nero, assicurati solo che il canale alfa sia 1.0 nei pixel (a meno che tu non voglia la trasparenza nello screenshot, ovviamente).
- 1. Ruota immagine in senso orario utilizzando LibGDX
- 2. Excel VBA salvare screenshot
- 3. Salvare lo screenshot catturato dopo averlo modificato
- 4. Simulatore iOS si rifiuta di salvare screenshot
- 5. Sfondo animato utilizzando Libgdx
- 6. PHP salvare file immagine
- 7. Come salvare l'oggetto Graphics come immagine in C#?
- 8. opencv: come salvare l'array float come immagine
- 9. Caricamento trama in libgdx android utilizzando il file in res?
- 10. Salvare una tela WPF come immagine
- 11. come catturare screenshot in html utilizzando js o jQuery
- 12. Come acquisire uno screenshot utilizzando VBScript in TestComplete?
- 13. Come salvare una stringa base64 come immagine usando ruby
- 14. Screenshot Webdriver
- 15. Come creare screenshot di QWidget?
- 16. Salvare la vista wpf come immagine, preferibilmente .png
- 17. Come salvare un file immagine su un database Postgres?
- 18. javascript come salvare html reso sulla pagina web come immagine
- 19. come salvare il pannello come immagine nello swing?
- 20. Come posso salvare il codice svg come immagine .svg?
- 21. Android: come salvare una cornice di anteprima come immagine jpeg?
- 22. Overlay schermo per Screenshot
- 23. (Java LibGDX) Come si ridimensionano le mie trame in LibGDX?
- 24. Come posso prendere e salvare uno screenshot di BMP in SDL 2?
- 25. android condividi immagine in ImageView senza salvare in SD card
- 26. Come salvare ALAsset immagine su disco velocemente su iOS?
- 27. Come "aprire" e "salvare" utilizzando java
- 28. Come salvare un'immagine per database utilizzando MVC 4
- 29. Come salvare l'immagine in un database?
- 30. utilizzando $ resource in AngularJs per salvare la matrice di oggetti
Libgdx ora supporta nativamente il salvataggio dei file PNG, vedere il metodo '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) –