【问题标题】:How to create an Image from a url Codenameone如何从 url Codenameone 创建图像
【发布时间】:2013-08-11 22:35:37
【问题描述】:

我需要从具有图像 url 的字符串创建一个新的 Image 实例。
例如。 http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png

这种类型的 url 来自 JSONParser,我想用它们来填充多按钮列表的图标。

我使用这个 Model 类的以下 getItemAt 方法将数据放在一个多按钮列表中。每个多按钮都有一个图标和一些线条。我将 Line1 命名为 name,将 Line2 命名为 rating。我想从字符串 url 制作一个图像,这样我就可以在 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;
    }

【问题讨论】:

  • 什么类型的图片?缓冲图像?还请告诉我们您尝试过什么,以及它是如何工作的。顺便说一句,不是我的反对票。如果您提供我要求的信息,我未来的投票也是如此。 :)

标签: java image codenameone


【解决方案1】:

使用ImageDownloadService.createImageToStorage 将异步下载图像,将其放在适当位置的列表的哈希表中。刷新列表并将图像缓存在存储中,以备您再次请求时使用。

作为服务的一部分,它还可以将您的图像缩放到固定尺寸。

【讨论】:

  • 这对我来说似乎很先进。我正在尝试扩展MapsDemo 并将showResturantsOnMap 返回的地点显示为带有图标、名称、评级和距离的列表。为了创建这个列表,我在 KitchenSink 演示中使用了来自 Contacts.java 的逻辑。抱歉,我不明白如何使用您的信息。
  • 图片需要在后台下载,以便在您使用时填写列表。只需在哈希表的“照片”条目中放置一个占位符实例,然后为列表中的每个条目(创建条目实例时)调用 ImageDownloadService.createImageToStorage(theURL, listInstance, offsetInTheList, "photo", uniqueIdForThisEntryCanBeAnyString, new Dimension(widthOfPreviewImage , heightOfPreviewImage);
【解决方案2】:

您可以使用它从 url 获取图像

Image image = Toolkit.getDefaultToolkit().getDefaultToolkit().createImage(url);

这个也可以

Image image = ImageIO.read(url); 

【讨论】:

  • 这不起作用。与 codenameone api Image 类有冲突。这是 api:codenameone.googlecode.com/svn/trunk/CodenameOne/javadoc/… 我认为我的解决方案在 ImageDownloadService 类中,但我不明白如何在我的情况下使用它。
  • 这是一个 Codename One 问题,不是 AWT 问题,所以这个答案不正确。
猜你喜欢
  • 2020-06-25
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 2010-12-11
  • 1970-01-01
  • 2012-08-05
相关资源
最近更新 更多