在 codenameone 中保存具有特定名称和压缩大小的照片

save a photo with a specific name and compressed size in codenameone

我想拍张照片并用特定名称和压缩尺寸(低质量)保存。我该怎么做?图片以随机名称保存在 Android 设备和模拟器上。

String filePath = Capture.capturePhoto();
if(filePath != null) {                
try {
     ImageIO io = ImageIO.getImageIO();
     io.saveAndKeepAspect(filePath,
        FileSystemStorage.getInstance().getAppHomePath()+"testImage.jpg", 
        ImageIO.FORMAT_JPEG, 100, 100, 0.1f, true, false);

     InputStream inputStream = FileSystemStorage.getInstance().openInputStream(FileSystemStorage.getInstance().
getAppHomePath()+"testImage.jpg");

     Image readImage = Image.createImage(inputStream);
     Util.cleanup(inputStream);
     imgViewer.setImage(readImage);

     } catch(IOException err) {
       err.printStackTrace();
     }
     hi.add(imgViewer);
     hi.show();

我做过类似的事情,但我使用了 Storage,尽管我为您添加了 FileSystemStorage 的评论。 这些行以我在 outputStream 中声明的名称创建文件。

//OutputStream os = FileSystemStorage.getInstance().openOutputStream(fileName);
OutputStream os = Storage.getInstance().createOutputStream(fileName);
ImageIO.getImageIO().save(img, os, ImageIO.FORMAT_JPEG, 0.9f);
os.close();

编辑:这是一个示例,您的代码与我提供的行混合在一起,它在我的模拟器上运行良好。

        String filePath = Capture.capturePhoto();
        if (filePath != null) {
            try {
                Image img = Image.createImage(filePath);
                OutputStream os = FileSystemStorage.getInstance().openOutputStream(FileSystemStorage.getInstance().getAppHomePath() + "xyz.jpg");
                ImageIO.getImageIO().save(img, os, ImageIO.FORMAT_JPEG, 0.9f);
                os.close();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }