我一直在做一個應用程序,我有客戶名單,我將客戶列爲一個列表(使用容器代替列表,代碼名稱解釋如此)。從帶有領先標籤的列表中,我點擊該項目,然後轉到詳細信息頁面,在此處顯示客戶圖片和其他信息。 這裏是我的代碼從URL(Amazon S3的桶)圖像Codename one loading UrlImage issue
private Image getUserProfilePicture(String imgName)
{
Image defaultImage = FromResource("DefaultPhoto.png");
int width = defaultImage.getWidth();
int height = defaultImage.getHeight();
String imgUrl = "image from s3 bucket";
EncodedImage placeHolder = (EncodedImage)defaultImage;
Image roundMask = Image.createImage(width, height, 0xff000000);
Graphics gr = roundMask.getGraphics();
gr.setColor(0xffffff);
gr.fillArc(0, 0, width, height, 0, 360);
URLImage.ImageAdapter ada = URLImage.createMaskAdapter(placeHolder);
//image is deleted from storage before load
Image profileImage = URLImage.createToStorage(placeHolder, imgName,
imgUrl, ada);
return profileImage;
}
有誰沒有圖像,首先,我看到的默認圖像的客戶。當我回到列表並再次點擊同一個客戶時,我沒有顯示圖像。空白空間。相反,我在調試器窗口中收到錯誤消息。
[EDT] 0:0:0,1 - 例外:java.lang.IllegalArgumentException異常 - 創建 圖像失敗長度的給定的圖像數據:306 java.lang.IllegalArgumentException異常:創建圖像失敗的給出 圖像數據長度:306在 com.codename1.ui.Image.createImage(Image.java:655)在 com.codename1.ui.EncodedImage.getInternal(EncodedImage.java:366)在 com.codename1。 ui.EncodedImage.getInternalImpl(EncodedImage.java:341) at com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:512)at com.codename1.ui.URLImage $ ScaleToFill.adaptImage(URLImage.java:116)在 com.codename1.ui.URLImage $ DownloadCompleted.actionPerformed(URLImage.java:239) at com.codename1.ui.URLImage $ 4.onSucess(URLImage.java:302)at com.codename1.ui.URLImage $ 4.onSucess (URLImage.java:298)at com.codename1.util.CallbackDispatcher.run(CallbackDispatcher.java:53) at com.codename1.ui.Display.processSerialCalls(Display.java:1155)at com.codename1.ui .Display.edtLoopImpl(Display.java:1099)在 com.codename1.ui.Display.mainEDTLoop(Display.java:1000)在 com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)在
com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
再次回到列表並再次單擊相同的客戶時,我看到默認圖像。 每次點擊都會收到此錯誤消息。我完全迷失在這裏。
據我所知,佔位符圖像將被顯示,直到圖像從url加載。在這種情況下,s3桶中沒有圖像。 由於我沒有使用NetworkManager來檢查204響應代碼,因此無法確定圖像是否已加載。我直接在URLImage中使用s3 url。
任何幫助將不勝感激。
謝謝。
嗨Sha,感謝您的反饋。我試圖監視網絡,我確實發現請求是在其他每次點擊時完成的。我確實將客戶ID作爲圖像名稱保存到存儲文件。假設客戶ID是12345,我確實看到12345ImageURLTMP名稱被添加到存儲中。這是導致問題的原因。當我手動刪除這兩個名稱,它工作正常。任何原因?謝謝。 – Ravimaran
TMP文件很好。在網絡監視器中,您應該看到來自Amazon的響應,其中包含一條錯誤消息,讀取錯誤消息。 –