gpt4 book ai didi

codenameone - 代号一加载UrlImage问题

转载 作者:行者123 更新时间:2023-12-05 07:43:15 26 4
gpt4 key购买 nike

我一直在开发一个有客户列表的应用程序,我将客户显示为列表(使用容器而不是代号一中解释的列表)。从带有前导标签的列表中,我单击该项目,它会转到显示客户图片和其他信息的详细信息页面。这是我从 url (amazon s3 bucket) 获取图像的代码

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 - Exception: java.lang.IllegalArgumentException - create image failed for the given image data of length: 306 java.lang.IllegalArgumentException: create image failed for the given image data of length: 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) at 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) 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) at com.codename1.ui.Display.mainEDTLoop(Display.java:1000) at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120) at
com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

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

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

任何帮助将不胜感激。

谢谢。

最佳答案

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

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

关于codenameone - 代号一加载UrlImage问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43860651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com