gpt4 book ai didi

java - 使用 URL 将图片加载到圈子中的 JavaFX 在 Windows 上出错

转载 作者:可可西里 更新时间:2023-11-01 10:41:15 26 4
gpt4 key购买 nike

我们想要一个填充个人资料图片的圆圈,加载图片的 URL。

我们已尝试在 Windows、Linux 和 MacOS 上使用 URL 加载图像。事实证明图像处理适用于 Linux 和 MacOS,但不适用于 Windows。

Circle circle = new Circle(25);
Image image = new Image("https://i.imgur.com/itElfV3.jpg");
circle.setFill(new ImagePattern(image));

我们希望圆圈内有个人资料图片。但结果是 Windows 上的 NullPointerException。然后我们得到的错误是:

Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Image must be non-null
at com.sun.prism.paint.ImagePattern.<init>(ImagePattern.java:44)
at com.sun.javafx.tk.quantum.QuantumToolkit.createImagePatternPaint(QuantumToolkit.java:905)
at com.sun.javafx.tk.Toolkit.getPaint(Toolkit.java:657)
at javafx.scene.paint.ImagePattern.acc_getPlatformPaint(ImagePattern.java:291)
at javafx.scene.paint.Paint$1.getPlatformPaint(Paint.java:51)
at javafx.scene.shape.Shape.updatePGShape(Shape.java:916)
at javafx.scene.shape.Shape.impl_updatePeer(Shape.java:965)
at javafx.scene.shape.Circle.impl_updatePeer(Circle.java:333)
at javafx.scene.Node.impl_syncPeer(Node.java:503)
at javafx.scene.Scene$ScenePulseListener.syncAll(Scene.java:2304)
at javafx.scene.Scene$ScenePulseListener.syncAll(Scene.java:2313)
at javafx.scene.Scene$ScenePulseListener.syncAll(Scene.java:2313)
at javafx.scene.Scene$ScenePulseListener.syncAll(Scene.java:2313)
at javafx.scene.Scene$ScenePulseListener.synchronizeSceneNodes(Scene.java:2280)
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2419)
at com.sun.javafx.tk.Toolkit.lambda$runPulse$29(Toolkit.java:398)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:397)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:424)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:518)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:498)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulseFromQueue(QuantumToolkit.java:491)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$403(QuantumToolkit.java:319)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
at java.lang.Thread.run(Thread.java:748)

如果我们在本地加载图像,代码在 Windows 上确实有效,但由于我们希望用户能够将新 URL 上传到他们自己的个人资料图片,因此我们希望使用链接。

最佳答案

你的代码应该可以工作,但我不知道为什么不工作,你可以使用 InputStream 从 URL 获取图像,这里是例子

Image image = null;
try{
URL url = new URL("https://i.imgur.com/itElfV3.jpg");
URLConnection connection = url.openConnection();
InputStream inputStream = connection.getInputStream();
image = new Image(inputStream);

}catch (IOException e){
e.printStackTrace();
}

Circle circle = new Circle(25);
circle.setFill(new ImagePattern(image));

关于java - 使用 URL 将图片加载到圈子中的 JavaFX 在 Windows 上出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55334045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com