Javafx图像无法正确呈现

时间:2013-10-24 14:59:50

标签: java javafx transparency game-engine image-rendering

我试图从一个名为Age Of Empires的老游戏中渲染一个GIF动画...而gif用黑色而不是透明渲染奇怪...... gif是来自http://ageofempiresgif.altervista.org/en/archive.php

的任何gif

1 个答案:

答案 0 :(得分:3)

问题已复制

我可以在我的机器上复制Age of Empires GIF的错误渲染(Java8b111,Win7,ATI Radeon HD 4600)。

blackknight

在JavaFX问题跟踪器中跟踪的问题

问题是RT-23233 GIF frames have incorrect background(需要登录,但是任何人都可以注册并在提供的链接上查看问题详情)。该问题计划在Java 8后发布中实施。

原因是JavaFX严格遵守gif规范,而大多数gif渲染实现(例如所有常见浏览器)更宽松,因此以不同方式呈现图像(“正确”)。链接的RT-23233是一个放宽JavaFX gif渲染器实现的请求,以便它能正确渲染诸如Age of Empires gifs之类的GIF。

仅使用ImageView

复制问题的示例程序
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.image.*;
import javafx.stage.Stage;

public class AOE extends Application {
    @Override public void start(final Stage stage) throws Exception {
        stage.setScene(
            new Scene(
                new Group(
                    new ImageView(
                        new Image(
                            "http://ageofempiresgif.altervista.org/33995109.gif"
                        )
                    )
                )
            )
        );
        stage.show();
    }

    public static void main(String[] args) { launch(AOE.class); }
}

仅使用WebView

复制问题的示例程序
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class AoEWebView extends Application {
    @Override public void start(final Stage stage) throws Exception {
        WebView webView = new WebView();
        webView.getEngine().load("http://ageofempiresgif.altervista.org/en/archive.php");

        stage.setScene(
                new Scene(
                        new Group(
                            webView
                        )
                )
        );
        stage.show();
    }

    public static void main(String[] args) { launch(AoEWebView.class); }
}

在JavaFX WebView中呈现的示例页

webviewimages

在Firefox中呈现的示例页

firefoximages