URLImage.createToStorage在代号一中失败。

问题描述 投票:1回答:1

我试图用codenameone从一个imgur png创建一个URL图片,用这个代码。

Form hi = new Form(new BoxLayout(BoxLayout.Y_AXIS));
EncodedImage placeholder = EncodedImage.createFromImage(Image.createImage(hi.getWidth(), hi.getWidth() / 5, 0xffff0000), true);
URLImage background = URLImage.createToStorage(placeholder, "test2.png","https://i.imgur.com/VMwUrqH.png", URLImage.RESIZE_SCALE_TO_FILL);
background.fetch();
hi.add(background);
hi.show();

但它只是给我这个错误。

Exception: java.lang.IllegalArgumentException - create image failed for the given image data of length: 7165
java image codenameone
1个回答
2
投票

给定的文件是一个有效的PNG图像数据,512 x 566,8-bitcolor RGBA,非隔行扫描。在《代号一号》中应该可以正常工作,但事实并非如此。你的代码给了我同样的异常。

事实上,Codename One下载的文件与我们从浏览器下载的文件完全不同。Codename One下载的文件是一个(有效的?)PNG图像数据,1080 x 216,8-bitcolor RGBA,非隔行扫描。我怀疑服务器正在应用重定向,以避免像这样的自动下载。

为了证实我的假设,我改变了代号一的用户代理,把它分配到我的浏览器上。

ConnectionRequest.setDefaultUserAgent("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0");

结果是它可以工作了!:-)

然而,为了迫使代号一号用给定的用户代理重新下载文件,你必须删除以下文件 test2.png 文件从 .cn1 目录。

这是完整的工作代码。

Form hi = new Form(new BoxLayout(BoxLayout.Y_AXIS));
        ConnectionRequest.setDefaultUserAgent("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0");
        EncodedImage placeholder = EncodedImage.createFromImage(Image.createImage(hi.getWidth(), hi.getWidth() / 5, 0xffff0000), true);
        URLImage background = URLImage.createToStorage(placeholder, "test2.png", "https://i.imgur.com/VMwUrqH.png", URLImage.RESIZE_SCALE_TO_FILL);
        background.fetch();
        hi.add(background);
        hi.show();
© www.soinside.com 2019 - 2024. All rights reserved.