如何从URL创建图像 - Codenameone

3

我需要从包含图像网址的字符串中创建一个新的Image实例。

例如:http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png

这些类型的URL来自JSON解析器,我想使用它们填充多按钮列表的图标。

我使用此Model类的getItemAt方法将数据放入多按钮列表中。每个多按钮都有一个图标和一些行。我已将Line1命名为name,将Line2命名为rating。 我想通过字符串URL制作一个Image,以便我可以更改multibutton图标以替换h.put("icon", defaultIcon)行中的defaultIcon。

static class Model implements ListModel {
    public Object getItemAt(int index) {
        Hashtable h      = new Hashtable();
        Hashtable entry  = (Hashtable) results.elementAt(index);
        String    name   = (String) entry.get("name");
        Double    rating = (Double) entry.get("rating");
        String    url    = (String) entry.get("icon");

        h.put("name", name);
        h.put("icon", defaultIcon); // change defaultIcon with an Image from url String

        if (rating == null) {
            h.put("rating", "Not rated");
        } else {
            h.put("rating", "Rating: " + rating.toString());
        }

        return h;
    }

什么类型的图像?BufferedImage?请告诉我们您尝试过什么以及它为什么不起作用。顺便说一句,这不是我的投票。如果您提供我请求的信息,我会给您点赞的。 :) - Hovercraft Full Of Eels
2个回答

3
使用 ImageDownloadService.createImageToStorage 方法,它会异步下载图片并将其放在哈希表中的正确位置。刷新列表并将图像缓存在存储器中,以防再次请求它。该服务还可以将您的图像按比例缩放到固定尺寸。

这对我来说似乎有点高级。我正在尝试扩展MapsDemo并将从showResturantsOnMap返回的地点显示为带有图标、名称、评分和距离的列表。为了创建这个列表,我使用了KitchenSink演示中Contacts.java的逻辑。很抱歉,但我不明白如何使用您提供的信息。 - Aris F.
1
图片需要在后台下载,因此列表将在您使用它时填充。只需在哈希表中的“photo”条目中放置一个占位符实例,并为列表中的每个条目(当您创建条目实例时)调用ImageDownloadService.createImageToStorage(theURL,listInstance,offsetInTheList,“photo”,uniqueIdForThisEntryCanBeAnyString,new Dimension(widthOfPreviewImage,heightOfPreviewImage); - Shai Almog

0
您可以使用此方法从 URL 中获取图像。
Image image = Toolkit.getDefaultToolkit().getDefaultToolkit().createImage(url);

这也可以工作

Image image = ImageIO.read(url); 

这个不起作用。Codenameone API Image类存在冲突。这是API链接:https://codenameone.googlecode.com/svn/trunk/CodenameOne/javadoc/index.html 我认为我的解决方案在ImageDownloadService类中,但我不知道如何在我的情况下使用它。 - Aris F.
这是一个 Codename One 的问题,而不是 AWT 的问题,因此这个答案是不正确的。 - Shai Almog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接