在Codename One项目中本地保存图像

7
我在这个视频中跟着创建了一个相机捕获页面的教程:http://www.youtube.com/watch?v=nF4eqzVcsic 所以我目前的代码看起来是这样的:
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
1个回答

7

在您的设备上不存在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);

哇,太棒了。好的,谢谢。那么,一旦保存这些文件,是否可以再次读取它们? - Ari Anastassiou
否则保存它们有什么意义呢 ;-) Storage还有一种打开输入流的方法,您可以使用EncodedImage.create(stream)来获取图像对象。 - Shai Almog
这个“本地存储”是类似于浏览器的LocalStorage还是实际将图像保存在设备上?如果是后者,它将被保存在哪里?我能在设备的照片相册中查看吗? - Stacky
不行,我可以详细说明,但这是一个很长的解释,而且管理员可能会“翻转”。简而言之,存储是永久性的,但当您卸载应用程序时,它总是随卸载而删除。文件系统“有时”会这样做,并具有更复杂的层次结构。 - Shai Almog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接