Javafx 图像无法正确渲染

标签 java javafx transparency game-engine image-rendering

我试图从一款名为《帝国时代》的老游戏中渲染一个动画 gif...而该 gif 却奇怪地用黑色而不是透明渲染... 该 gif 是来自 http://ageofempiresgif.altervista.org/en/archive.php 的任何 gif

最佳答案

问题已重复

我可以在我的计算机(Java8b111、Win7、ATI Radeon HD 4600)上复制帝国时代 gif 的错误渲染。

blackknight

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

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

原因是 JavaFX 严格遵守 gif 规范,而大多数 gif 渲染实现(例如所有常见浏览器)更加宽松,因此以不同的方式(“正确”)渲染图像。链接的 RT-23233 是放宽 JavaFX gif 渲染器实现的请求,以便它能够正确渲染 gif,例如帝国时代 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

关于Javafx 图像无法正确渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19569514/

相关文章:

java - 打印特定字符

javafx - 如何在 TornadoFX 中将 minHeight 和 minWidth 设置为窗口?

android - 通过触摸输入在位图上绘制透明线

html - 使用带背景重复的 alpha png 时出现 IE10 伪像

具有透明区域的 C# PNG 图像作为按钮

java - Spring 与 Callable 异步如何工作以及我不明白的地方?

java - 如何在没有构造函数的情况下初始化类?

Java如何访问位于我的项目上方目录中的文件

Java 8 SortedList TableView 不刷新

java - 如何测试持久层?