2016-08-02 75 views
1

此問題似乎剛剛在最後一天開始。從相機膠捲中選擇的圖像顯示爲黑色屏幕

我有打開圖庫,存儲圖像並顯示它的代碼。如果圖像太大(似乎超過130000bytes),它只會顯示一個黑屏。這裏是我的代碼:

String path = (String) ev.getSource(); 
InputStream stream = FileSystemStorage.getInstance().openInputStream(path); 

OutputStream out = FileSystemStorage.getInstance().openOutputStream(FileSystemStorage.getInstance().getAppHomePath() + movePath); 
Util.copy(stream, out); 

Image image = Image.createImage(path); 
ScaleImageLabel fillLabel = new ScaleImageLabel(image); 
fillLabel.setBackgroundType(Style.BACKGROUND_IMAGE_SCALED_FILL); 
imageVideoContainer.add(BorderLayout.CENTER, fillLabel); 

就像我說的,我敢肯定,這是工作我最後一次建成,它只是在幾天前。 3.5有什麼變化可能會影響到這一點?似乎只發生在iOS上。 謝謝。

回答

0

如果這是其他時間點,我需要進行調查。但是,由於我們剛剛退出3.5代碼凍結,因此我們沒有在2016年7月27日至8月5日(即將於本週五)之後的一週內完成服務器更新。

所以我懷疑這是我們處理圖像的方式發生了變化。

有幾件事情,可能是這樣的原因:

  1. OS更新打破的東西。

  2. 這是總是打破,但很難注意由於繁殖的微小變化。

  3. 我們做了一個改變,最後一個好的構建超過了一個星期前。

我不知道它是1所以讓我們檢查3和2。3讓我們看看提交歷史: https://github.com/codenameone/CodenameOne/commits/master

注意,這是致力於今日(2016年8月3日)的變化AREN仍然在構建服務器無論如何...

尋找通過代碼看起來中度懷疑唯一的事情是getRGB的變化,但代碼不會從您所做的調用達到。請注意,您通常可以使用versioned build並針對3.4構建,以驗證這不是我們代碼中的迴歸,但我不確定在3.4中是否存在ScaledImageLabel

因此,讓我們假設這是2,之前有什麼東西被打破了。由於您從相機膠捲中抓取圖片,您可能會得到非常高分辨率的圖像。爲了證明這是一個問題嘗試:

ScaleImageLabel fillLabel = new ScaleImageLabel(image.scaledWidth(300)); 

假設工作這可能意味着圖像尺寸(寬度/高度)超過設備上GPU限制。這是你可以通過一個稍微小一點的圖像來解決的問題。而不是複製圖像,您可以使用ImageIO.save預先縮放所述圖像。

+0

我試過縮放它,但它仍然沒有幫助。我確認這只是發生在高分辨率的照片上。而且它似乎並沒有發生在我一週前建立的應用程序中。也許我改變了一些我找不到的東西。無論如何,使用ImageIO.save保存一個較小的版本,然後使用它來顯示已經工作,所以沒關係。另外,版本3.4不適用於我針對?謝謝。 – Karry

+0

使用登錄按鈕登錄專業賬戶後,您可以選擇版本3.4。 –

+0

Eclipse只會讓我升級到3.3版,然後升級到最新版 – Karry

相關問題