ImageView 中较长的 gif 持续时间

Posted

技术标签:

【中文标题】ImageView 中较长的 gif 持续时间【英文标题】:Longer gif duration in ImageView 【发布时间】:2020-04-10 02:41:10 【问题描述】:

我正在使用 javafx 编写桌面应用程序,当我从 URL 源 (http) 向 ImageView 添加 gif 时,它只播放 gif 的一部分。我什至尝试将 gif 下载到我系统上的文件中,但它仍然只播放了一秒钟。当我在浏览器中播放它时,它会完全播放。

如何将来自 giphy 或任何其他 gif 托管站点的 gif 显示到 imageview 到 play the full duration

 public void retrieveGif() 

    System.out.println("retreiving gif");

    giphyImage.setImage(new Image("http://i.giphy.com/E2d2tsgz7iHo4.gif"));


【问题讨论】:

这能回答你的问题吗? Display Animated GIF 也许this answaer 会帮助你 这能回答你的问题吗? How I can stop an animated GIF in JavaFX?。这是从如何停止 GIF 开始的,但代码涵盖了如何将一个 GIF 拆分为帧并显示所有帧。 这些都没有帮助,但谢谢。 【参考方案1】:

也许这个gif坏了。

我下载并调整大小并上传它的作品。

调整大小: https://ezgif.com/resize

上传: https://gifyu.com/

@Override
public void start(Stage primaryStage) throws Exception 
    primaryStage.setTitle("ImageView Experiment 1");

    String imgUrl = "https://s5.gifyu.com/images/test222466041f4e8599a.gif";
    URLConnection connection = new URL(imgUrl).openConnection();
    connection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");
    Image image = new Image(connection.getInputStream());
    ImageView imageView = new ImageView();
    imageView.setImage(image);

    HBox hbox = new HBox(imageView);

    Scene scene = new Scene(hbox, 200, 200);
    primaryStage.setScene(scene);
    primaryStage.show();



public static void main(String[] args) 
    Application.launch(args);

【讨论】:

感谢您帮助我取得了突破 我发现了另一个给我带来问题的图像,我调整了它的像素大小,它也可以完全播放,因此它与 gif 的实际大小有关出于某种原因,现在我必须弄清楚如何通过 url 链接自动调整大小。

以上是关于ImageView 中较长的 gif 持续时间的主要内容,如果未能解决你的问题,请参考以下文章

颤振等待未来更长的时间?

ImageView

Oracle中较长number型数值的科学计数显示问题

控件ImageView

深入理解计算机系统笔记

线程阻塞导致的性能问题分析