私はScreenUtils.getFrameBufferPixels(...)
を使用してゲーム画面のスクリーンショットを撮っています。このメソッドによって返されたバイト配列をファイルとしてイメージとして保存します。私はlibGDXと私のフォーカスをアンドロイドで使用しています。ScreenUtilsを使用してスクリーンショットをlibgdxの画像として保存する
5
A
答えて
4
今はかなり簡単です。 Libgdxはexampleを提供します。
これを動作させるには、1つのステートメントを追加する必要がありました。画像を/screenshot1.png
に直接保存することはできませんでした。単にGdx.files.getLocalStoragePath()
の前に。
ソースコード:http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/:
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;
}
}
3
私はここにlibGDXフォーラムのメンバーが提供する最小限の.PNGエンコーダと幸運を持っていた:エンコーダは非常に単純であるとして、その結果PNG画像は、最適化されていないことをhttp://www.badlogicgames.com/forum/viewtopic.php?p=8358#p8358
注意(私は彼らを減らすためにpngcrushオフラインで使用サイズは劇的に)。
また、アルファチャンネルにいくつか問題がありました。下にある画面の色は画面上の透明なピクセルを介して表示されますが、画面から削り取られたピクセルでは表示されません(実際はPNGエンコーダの障害ではありません)。背景が黒い場合は、アルファチャンネルがピクセルで1.0になっていることを確認してください(もちろん、スクリーンショットに透過性を必要としない限り)。
関連する問題
- 1. アップロードとPrimeFacesを使用して画像を保存して、JSF
- 2. ピカソを使用して画像をダウンロードして保存する
- 3. Laravel Cant保存画像を使用して保存
- 4. Android:ビューのスクリーンショットを撮る、画像を保存して取得する
- 5. JAVAを使用して画像をアップロードしてフォルダに保存
- 6. ブロブを使用して画像をファイルとしてファイルに保存する
- 7. savefigを使用してpyplotを画像として保存するには
- 8. 画像を画像として保存しますか?
- 9. PHPクライアントを使用してRiakで画像を保存する
- 10. QtWebEngineを使用してディスクに画像を保存する
- 11. S3を使用してモバイルアプリケーションから画像を保存する
- 12. OpenCVを使用して画像を保存する
- 13. esファイルエクスプローラを使用して画像を保存する方法
- 14. webserviceを使用してglassfishに画像を保存する
- 15. Nokogiriを使用して画像を保存する
- 16. entity_metadata_wrapperを使用してカスタムエンティティに画像ファイルを保存する
- 17. canvas2image関数を使用して画像を保存する
- 18. ワードプレスでAjaxを使用して画像を保存する
- 19. タンゴカメラを使用してフレーム/画像を保存する
- 20. ネイティブカメラを使用してAndroidで画像を保存する
- 21. ASP.NETを使用してサブドメインに画像を保存する
- 22. 非ローカルパスを使用してディレクトリに画像を保存する
- 23. iOSでjsPDFを使用して画像を保存するUIWebView
- 24. Djangoを使用してApp Engineに画像を保存する
- 25. jsを使用して画像を保存する
- 26. VB.NETを使用してデータベースに画像を保存する
- 27. キーボードコールバックイベントを使用してスクリーンショットを保存します。
- 28. CCRenderTextureを使用してCoCos2d V2.xxにスクリーンショットを保存する
- 29. プログラムとしてWordファイルを画像として保存する
- 30. バウンディングボックスを画像として保存
Libgdxは今ネイティブPNGファイルを保存するサポート、 'PixmapIO.writePNG'方法を参照してくださいgdx/graphics/PixmapIO.html#writePNG(com.badlogic.gdx.files.FileHandle、com.badlogic.gdx.graphics.Pixmap) –