从libGDX将图像保存到iOS图库

时间:2013-08-28 09:23:49

标签: java ios screenshot libgdx

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

但屏幕截图并没有出现在任何地方。如何将其显示在“照片”应用中?

2 个答案:

答案 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卡根目录和桌面系统上当前用户的主目录

拒绝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");