我正在开发一个程序,我必须插入一些GIF来解释程序的各个部分。第一个我插入工作正常。当我把它们放入程序时,我使用的下三个是闪烁(圆圈)。 它们在图像查看器中不会闪烁。 我在After Effects中做了动画,渲染为mov,在Photoshop中导入并将它们导出为gif。我曾尝试过抖动和没有。 GIF的背景必须是透明的。
我为所有的GIF使用相同的代码。我还将工作gif插入应该使用非worikings的地方。在这个地方,好gif也很好用。所以我觉得我的代码没问题。 这是我在程序中插入它们的方式:
JLabel gif = new JLabel(new ImageIcon(getClass().getResource("/gifs/soundcarpet.gif")));
gif.setBorder(BorderFactory.createEmptyBorder(20, 0, 0, 0));
westPanel.add(gif, BorderLayout.CENTER);
this.add(westPanel, BorderLayout.WEST);
这是工作的gif:working gif 这是一个不起作用的问题:not working
有人可以弄清楚它们之间有什么区别吗? 我已经用相同的设置制作了所有这些设置,我现在尝试了很多不同的设备......
谢谢!
答案 0 :(得分:3)
如果您拆分GIF,您可以看到您遇到问题的那个通过一种技术进行优化,该技术可以使每个帧的不变部分透明(以减少文件大小)。
您可以在http://ezgif.com/split中打开它们(选择"忽略优化"选项)以自行查看。
我没有真正体验过java中的GIF,但我想java无法处理这种gif优化。这并不奇怪,因为即使是像imagemagick和gifsicle这样的专业编辑也有时会对这样的GIF进行挣扎,并在调整大小或裁剪时产生奇怪的结果(闪烁,文物)。
您可以在http://ezgif.com/optimize上传有问题的gif,然后选择" Coalesce"选项,或者如果您安装了ImageMagick,请在本地运行带有-coalesce选项的convert命令,它将重绘每个帧完全删除此优化,我认为它将解决您的问题。但它会增加gif的文件大小。