2

我需要从 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();

但是屏幕截图没有出现在任何地方。如何让它出现在照片应用程序中?

4

2 回答 2

3

在这种情况下我正在做的是:

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());
        }
    });
}

我希望它对你有帮助。:)

于 2016-02-21T12:57:48.400 回答
0

首先尝试添加记录器,以便查看添加文件的位置。

如果你把它放在本地:

本地文件的存储相对于桌面上应用程序的根目录或工作目录,以及相对于 Android 上应用程序的内部(私有)存储。请注意,本地和内部在桌面上几乎相同。

如果在外部

外部文件路径相对于 Android 上的 SD 卡根目录和桌面系统上当前用户的主目录

参考FileHandling libGDX wiki

所以我猜你把它保存在本地,这就是为什么你不会在 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");
于 2013-08-29T11:06:31.413 回答