Image 正在获取要与Codename One一起使用的远程映像

Image 正在获取要与Codename One一起使用的远程映像,image,codenameone,Image,Codenameone,我正在尝试检索远程图像以在标签中使用它。我的代码如下: Dimension dimension = new Dimension(100, 100); ImageDownloadService.createImageToStorage("http://www.example.com/logo-icono.ico",label, "cacheID-unique-identifier",dimension); 但是,当我运行项目时,出现了以下错误: java.lang.IllegalArgument

我正在尝试检索远程图像以在标签中使用它。我的代码如下:

Dimension dimension = new Dimension(100, 100);
ImageDownloadService.createImageToStorage("http://www.example.com/logo-icono.ico",label, "cacheID-unique-identifier",dimension);
但是,当我运行项目时,出现了以下错误:

java.lang.IllegalArgumentException: create image failed for the given image data of length: 3906
    at com.codename1.ui.Image.createImage(Image.java:627)   at com.codename1.ui.Image.createImage(Image.java:627)
    at com.codename1.ui.EncodedImage.getInternal(EncodedImage.java:270)
    at com.codename1.ui.EncodedImage.getInternalImpl(EncodedImage.java:245)
    at com.codename1.ui.EncodedImage.drawImage(EncodedImage.java:433)
    at com.codename1.ui.Graphics.drawImage(Graphics.java:505)
    at com.codename1.ui.plaf.DefaultLookAndFeel.drawComponent(DefaultLookAndFeel.java:1079)
    at com.codename1.ui.plaf.DefaultLookAndFeel.drawLabel(DefaultLookAndFeel.java:380)
    at com.codename1.ui.Label.paint(Label.java:335)
    at com.codename1.ui.Component.internalPaintImpl(Component.java:1029)
    at com.codename1.ui.Component.paintInternalImpl(Component.java:1003)
    at com.codename1.ui.Component.paintInternal(Component.java:978)
    at com.codename1.ui.Container.paint(Container.java:903)
    at com.codename1.ui.Component.internalPaintImpl(Component.java:1023)
    at com.codename1.ui.Component.paintInternalImpl(Component.java:1003)
    at com.codename1.ui.Component.paintInternal(Component.java:978)
    at com.codename1.ui.Container.paint(Container.java:903)
    at com.codename1.ui.Form.paint(Form.java:2716)
    at com.codename1.ui.Component.internalPaintImpl(Component.java:1023)
    at com.codename1.ui.Component.paintInternalImpl(Component.java:1003)
    at com.codename1.ui.Component.paintInternal(Component.java:978)
    at com.codename1.ui.Component.paintInternal(Component.java:946)
    at com.codename1.ui.Component.paintComponent(Component.java:1223)
    at com.codename1.ui.Component.paintComponent(Component.java:1175)
    at com.codename1.impl.CodenameOneImplementation.paintDirty(CodenameOneImplementation.java:382)
    at com.codename1.impl.javase.JavaSEPort.paintDirty(JavaSEPort.java:963)
    at com.codename1.ui.Display.edtLoopImpl(Display.java:993)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:920)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
    at com.codename1.ui.Image.createImage(Image.java:627)

我做错了什么?

Ico文件是特定于windows的,大多数设备不支持加载它们。设备中仅保证PNG和JPEG格式


我还建议在适用的情况下使用URLImage。

我已将.ico图像更改为有效的.png,但错误仍然存在:java.lang.IllegalArgumentException:为长度为3906的给定图像数据创建图像失败。似乎有尺寸限制。这是否正确?如果使用相同的缓存密钥,它仍会带来旧图像,您可以清除存储。是。通过更改缓存密钥,它工作了。我不知道在开发环境中这样的数据被保留了下来。?如何以编程方式清理存储?在您的另一个问题“有时图像”中回答了这个问题。getWidth()返回以下异常:对于给定长度的图像数据,创建图像失败,如何解决?