2016-03-26 50 views
3

我有一個GUI構建的應用程序,管理客戶端的配置文件。當創建一個新的配置文件時,會拍攝一張照片。路徑(字符串)與其他信息一起保存在散列表中。Codename One - 從大圖像創建小圖像(並存儲它)

當它顯示所有客戶端的列表時,每個客戶端信息都設置爲一個Multibutton,每個客戶端信息都包含客戶端的一個小圖片。該圖片是每次載入表單時都會設置的蒙版圖片,因此載入速度非常緩慢(當我沒有小圖片時,載入速度更快)。

enter image description here

問題

我想保存蒙面小圖片之後我拿&保存客戶端的圖片。所以當我顯示客戶端列表時,我只需要獲取小圖片,而不必爲所有項目進行遮罩。這可能嗎?

我想這樣的:(我的目標是有一個工作「smallPhotoPath」)

String bigPhotoPath = Capture.capturePhoto(width, -1); 
Image bigPhoto = Image.createImage(bigPhotoPath); 
... 
//masking image 
... 
bigPhoto = bigPhoto.applyMask(mask); 

String smallPhotoPath = bigPhotoPath+"Small"; 
Image smallPhoto = bigPhoto.scaled(bigPhoto.getWidth()/8, -1); 
java.io.OutputStream os = Storage.getInstance().createOutputStream(smallPhotoPath); 
ImageIO.getImageIO().save(smallPhoto, os, ImageIO.FORMAT_PNG, 1); 
os.close(); 
+0

我不明白什麼是不是在您的代碼段的工作?注意,如果圖像是預先屏蔽的,您需要從標籤/多按鈕中刪除遮罩。 –

+0

當我稍後嘗試使用「Image.createImage(smallPhotoPath)」爲了加載到Multibutton的小圖片,它不起作用,並且錯誤被捕獲 – Felipe

+0

Shai,是否有可能使用EncodedImage這個?我檢查了你的ChatApp教程,但是在那裏你用一個URLImage替換了EncodedImage。我能做同樣的事嗎?但是對於捕獲的圖像而不是來自網絡的圖像? – Felipe

回答

2

嘗試了很多之後,我解決了這個問題。我改變了以下線路:

java.io.OutputStream os = Storage.getInstance().createOutputStream(smallPhotoPath); 

這一個:

OutputStream os = FileSystemStorage.getInstance().openOutputStream(smallPhotoPath); 

現在工作得很好:)