Codenameone 在一个项目的代号中本地保存图像

Codenameone 在一个项目的代号中本地保存图像,codenameone,Codenameone,我遵循了本视频中创建相机捕获页面的教程: 现在我的代码是这样的: protected void onCamera_CaptureButtonAction(Component c, ActionEvent event) { String i = Capture.capturePhoto(); if (i != null) { try { Image img = Image.createImage(i).scaledHeight(500);

我遵循了本视频中创建相机捕获页面的教程:

现在我的代码是这样的:

protected void onCamera_CaptureButtonAction(Component c, ActionEvent event) {
    String i = Capture.capturePhoto();
    if (i != null) {
        try {
            Image img = Image.createImage(i).scaledHeight(500);
            findCameraLabel().setIcon(img);

        } catch (Exception ex) {
        }
    }

}
我查看了CameraDemo应用程序,但似乎找不到正在保存的任何文件

我基本上只想把所有拍摄的照片保存在src文件夹中

任何帮助都将不胜感激。
Ari

您的设备上不存在src文件夹,并且您无权访问“应用程序文件夹”(存储本机二进制文件的地方),否则您将能够更改设备上的应用程序,从而可能安装病毒

示例中的变量
i
是一个临时文件URL,您可以在PC/Mac上看到它。您应该将其复制到本地文件或本地存储

您可以使用
FileSystemStorage
打开图像的输入流,然后使用相同的类(例如,在应用程序主目录中)将其存储,或者使用
Storage
类将图像保存到某处

例如,您可以将映像复制到本地存储,如下所示:

InputStream stream = FileSystemStorage.getInstance().openInputStream(i);
OutputStream out = Storage.getInstance().createOutputStream("MyImage");
Util.copy(stream, out);
Util.cleanup(stream);
Util.cleanup(out);

哇,太棒了。好的,谢谢。那么,保存这些文件后是否可以再次读取它们?否则保存它们有什么意义;-)存储也有打开输入流的方法,您可以使用EncodedImage.create(stream)来获取图像对象。这是“本地存储”类似于浏览器的本地存储,还是实际上将图像持久化到设备上?如果是后者,它将保存在哪里?我可以在设备的相册或其他地方查看吗?两者都不可以。我可以详细说明,但这是一个很长的解释,主持人会“翻转”。缩写:存储是永久性的,但当你们卸载一个应用程序时,它总是随着卸载一起被删除。文件系统“有时”会这样做,并且具有更复杂的层次结构。