gpt4 book ai didi

java - 透明背景的gif问题

转载 作者:行者123 更新时间:2023-12-01 19:14:52 24 4
gpt4 key购买 nike

我在以透明背景显示 gif 时遇到问题,因为当我启动此程序时,我的 gif 会显示,但 gif 的所有图片都保留在 Canvas 上。请问有人知道一些解决方案吗?

enter image description here enter image description here

这是我的代码:

package zkouska3;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class mainl extends JFrame{
private Image TestImage;

private BufferedImage bf;

public static void main(String[] args) {
new mainl();
}

public mainl() {
setSize(500, 500);
imageLoader();
setVisible(true);
}
public void imageLoader() {
try {
TestImage = new ImageIcon(this.getClass().getResource("pandulak.gif")).getImage();
}catch(Exception e) {

}
}
@Override
public void paint(Graphics g){
g.drawImage(TestImage, 0, 0, 300, 300, this);
}

}

最佳答案

这是另一个 How to fix .gif with corrupted alpha channel (stuck pixels) collected with Graphicsmagick?

您的 gif 是 disposal = 3,这意味着它在增量渲染时需要上一张图像。问题是图像是黑色背景而不是白色......

以下是可能的处置:

     if (disposal==0) s="no animation";
else if (disposal==1) s="leave image as is";
else if (disposal==2) s="clear with background";
else if (disposal==3) s="restore previous image";
else s="reserved";

当我用解码器渲染它时,它看起来像这样:

[![捕获][1]][1]

所以这里有两种可能的情况:

  1. 透明度

也许这应该被处理为带有背景的透明图像,但即使是像样的图像查看器(如 FastStone Image Viewer)也会显示相同的内容,所以我怀疑情况是否如此......

  • 扩展
  • 这是最有可能的原因。如今,WEB 浏览器(几年来)依赖于添加到 GIF 扩展包中的未记录的自定义扩展(而不是任何 GIF 规范的一部分),并且在渲染的某些方面(例如循环)完全忽略 GIF 文件格式。仅仅因为它们都使用相同的图像库来解码 GIF,而这只是编码错误(或有意设计的)...

    更多信息请参见:

    所以我的猜测是你的 GIF 有一些扩展包告诉 Brownser 使用与 GIF header 中存储的不同的处理方法。所以只是你的 GIF 有问题,只有有问题的 GIF 解码器才能正确渲染它......

    因此,您的解码器会忽略 GIF 的背景颜色,因此渲染不正确,因为增量渲染不适用于非黑色背景...

    是的,那些白线有间隙......它没有锯齿......[1]:/image/6Kbbp.gif

    关于java - 透明背景的gif问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59430100/

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