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

时间:2016-09-07 09:20:44

标签: 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();

1 个答案:

答案 0 :(得分:2)

我做过类似的事情,但我使用了存储,尽管我为你添加了一个关于FileSystemStorage的评论。 这些行在outputStream中以i声明的名称创建文件。

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

source example on eclipse with simulator