2016-09-07 67 views
1

我想拍攝一張照片並用特定名稱和壓縮大小(低質量)保存。我該怎麼做?該圖像在Android設備和模擬器上獲得一些隨機名稱。在codenameone中保存具有特定名稱和壓縮大小的照片

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(); 
+0

當你說的尺寸,你在MB平均尺寸? –

+0

是,以MB爲單位的大小 – Rupali

+1

在縮小圖像寬度/高度的大小的循環中使用kaya的答案(存在與接受尺寸的相同方法的版本),直到MB中的大小符合您的期望。 –

回答

2

我已經做了類似的事情,但我使用的存儲,altough我加了一個註釋與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(); 
      } 
     } 

source example on eclipse with simulator

+0

它仍然以隨機名稱存儲圖像。 – Rupali

+0

我更新了我的答案並添加了部分代碼的圖片。 – kaya

相關問題