2014-09-12 2 views
0

J'essaie de récupérer une image distante pour l'utiliser dans une étiquette. Mon code est le suivant:Obtention d'une image distante à utiliser avec Codename One

Dimension dimension = new Dimension(100, 100); 
ImageDownloadService.createImageToStorage("http://www.example.com/logo-icono.ico",label, "cacheID-unique-identifier",dimension); 

Cependant, quand je lance le projet, j'ai eu cette erreur:

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) 

Qu'est-ce que je fais mal?

Répondre

0

Les fichiers Ico sont spécifiques à Windows et la plupart des périphériques ne prennent pas en charge leur chargement. Seuls les fichiers PNG & JPEG sont garantis dans les appareils.

Je recommande également d'utiliser URLImage, le cas échéant.

+0

J'ai changé l'image .ico pour un .png valide, cependant, l'erreur persiste: java.lang.IllegalArgumentException: l'image créée a échoué pour les données d'image données de longueur: 3906. Il semble qu'il y ait une restriction TAILLE. Est-ce corret? – Goose

+0

Si vous avez utilisé la même clé de cache, l'ancienne image vous sera restituée. –

+0

Oui. En changeant la clé de cache cela a fonctionné. Je ne savais pas que dans l'environnement de développement, des données comme cette clé étaient conservées. ¿Comment puis-je nettoyer par programme le stockage? – Goose

Questions connexes