我需要从libGDX游戏中导出图像,并将其显示在iPad上的默认照片应用中。
目前,我这样做:
Pixmap image = getScreenshot();
FileHandle file;
String filename = "diplom_" + game.player.getID() + ".png";
if(Gdx.files.isExternalStorageAvailable())
file = Gdx.files.external(filename);
else
file = Gdx.files.local(filename);
PixmapIO.writePNG(file, image);
pixmap.dispose();
但屏幕截图并没有出现在任何地方。如何将其显示在“照片”应用中?
答案 0 :(得分:2)
在这种情况下我正在做的是:
private NSData getImageAsNsData(Pixmap pixmap) {
FileHandle file = Gdx.files.local("tmpImage.png");
PixmapIO.writePNG(file, pixmap);
NSData imageData = NSData.read(file.file());
file.delete();
return imageData;
}
public void sendToGallery(Pixmap pixmap) {
NSData imageData = getImageAsNsData(pixmap);
uiImage = new UIImage(imageData);
uiImage.saveToPhotosAlbum(new VoidBlock2<UIImage, NSError>() {
@Override
public void invoke(UIImage uiImage, NSError nsError) {
if (nsError!=null)
Gdx.app.log("Error", "Unable to save: " + nsError.getLocalizedDescription());
}
});
}
我希望它可以帮到你。 :)
答案 1 :(得分:0)
首先尝试添加记录器,以便查看添加文件的位置。
如果你把它放在本地:
本地文件相对于桌面上应用程序的根目录或工作目录以及相对于Android上应用程序的内部(私有)存储而存储。请注意,桌面上的本地和内部大致相同。
如果是外部的
外部文件路径相对于Android上的SD卡根目录和桌面系统上当前用户的主目录。
所以我猜你把它保存在本地,这就是为什么你不会在iOS中找到它。否则,您需要创建图片文件夹的正确路径。否则,您只需将其保存在安装应用程序的同一文件夹中。但我认为你需要使用文件句柄的absolut
版本。否则,你可以在完全不同的路径上保存一些东西。
在这种情况下,“myfile.txt”需要位于用户的主目录(Linux上的/home//myfile.txt或Windows和MacOS上的\ Users \\ myfile.txt)中,以及Android上的SD卡的根目录。
FileHandle handle = Gdx.files.absolute("/some_dir/subdir/myfile.txt");