首页 文章

代号一个加载UrlImage问题

提问于
浏览
2

我一直在研究一个我有客户列表的应用程序,我将客户显示为一个列表(使用容器代替列表,如代号1所述) . 从带有前导标签的列表中我点击该项目,然后进入详细页面,在该页面中显示客户图片和其他信息 . 这是我从url(亚马逊s3桶)获取图像的代码

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的图像数据,创建图像失败:306 at com.codename1.ui.Image.createImage(Image.java:655)at com.codename1.ui.EncodedImage.getInternal(EncodedImage.java:366)at com.codename1.ui.EncodedImage.getInternalImpl(EncodedImage.java:341) )com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:512)at com.codename1.ui.URLImage $ ScaleToFill.adaptImage(URLImage.java:116)at com.codename1.ui.URLImage $ DownloadCompleted.actionPerformed( URLImage.java:239)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)com.codename1.ui.Display.processSerialCalls(Display.java:1155)at com.codename1.ui.Display.edtLoopImpl(Display.java:1099)at com.codename1.ui . Display.mainEDTLoop(Display.ja va:1000)at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

再次当我回到列表并再次点击同一客户时,我确实看到了默认图像 . 我每次点击都会收到此错误消息 . 我完全迷失在这里 .

我知道占位符图像将一直显示,直到图像从网址加载 . 在这种情况下,s3存储桶中没有图像 . 由于我没有使用NetworkManager检查204响应代码,因此无法确定图像是否已加载 . 我直接使用带URLImage的s3 url .

任何帮助将不胜感激 .

谢谢 .

1 回答

  • 0

    清除本地存储空间以确保下载映像 . 打开网络监视器并查看结果 . 306字节似乎是一个错误的图像大小,所以我猜你从亚马逊收到一条错误消息,并尝试将其作为图像读取 .

    如果您打开网络监视器,您应该能够检查发送的请求和响应,并查看请求失败的原因 .

相关问题