在 JLabel 中显示来自 URL 的动画 .gif
Display animated .gif from URL in JLabel
有什么方法可以像 JPEG 或 PNG 图像一样以 JLabel
格式显示动画 GIF 图像?我想从 URL 加载动画 GIF 以在标签中显示它。
如果我尝试使用静态图像的常用方法,我只会收到 GIF 的第一帧...
url = new URL("http://example.gif");
image = ImageIO.read(url);
ImageIcon icon = new ImageIcon(image);
picture = new JLabel();
picture.setIcon(icon);
改为使用:
ImageIcon icon = new ImageIcon(url);
另请参阅 Show an animated BG in Swing 以了解该更改为何有效。
简而言之,使用 ImageIO
加载动画 GIF 将创建静态 GIF(由动画的第一帧组成)。但是,如果我们将 URL
传递给 ImageIcon
,它将正确加载动画的所有帧,然后 运行 它们。
所以改变这个:
url = new URL("http://example.gif");
image = ImageIO.read(url);
ImageIcon icon = new ImageIcon(image);
picture = new JLabel();
picture.setIcon(icon);
为此:
url = new URL("http://example.gif");
ImageIcon icon = new ImageIcon(url); // load image direct from URL
picture = new JLabel(icon); // pass icon to constructor
甚至这样:
url = new URL("http://example.gif");
picture = new JLabel(new ImageIcon(url)); // don't need a reference to the icon
有什么方法可以像 JPEG 或 PNG 图像一样以 JLabel
格式显示动画 GIF 图像?我想从 URL 加载动画 GIF 以在标签中显示它。
如果我尝试使用静态图像的常用方法,我只会收到 GIF 的第一帧...
url = new URL("http://example.gif");
image = ImageIO.read(url);
ImageIcon icon = new ImageIcon(image);
picture = new JLabel();
picture.setIcon(icon);
改为使用:
ImageIcon icon = new ImageIcon(url);
另请参阅 Show an animated BG in Swing 以了解该更改为何有效。
简而言之,使用 ImageIO
加载动画 GIF 将创建静态 GIF(由动画的第一帧组成)。但是,如果我们将 URL
传递给 ImageIcon
,它将正确加载动画的所有帧,然后 运行 它们。
所以改变这个:
url = new URL("http://example.gif");
image = ImageIO.read(url);
ImageIcon icon = new ImageIcon(image);
picture = new JLabel();
picture.setIcon(icon);
为此:
url = new URL("http://example.gif");
ImageIcon icon = new ImageIcon(url); // load image direct from URL
picture = new JLabel(icon); // pass icon to constructor
甚至这样:
url = new URL("http://example.gif");
picture = new JLabel(new ImageIcon(url)); // don't need a reference to the icon