Age Of Empires という古いゲームのアニメーション gif をレンダリングしようとしました... gif は透明ではなく黒で奇妙にレンダリングされます... gif はhttp://ageofempiresgif.altervista.org/en/の任意の gif ですアーカイブ.php
1 に答える
問題が再現されました
自分のマシン (Java8b111、Win7、ATI Radeon HD 4600) で Age of Empires gif の不適切なレンダリングを複製できます。
JavaFX Issue Tracker で追跡された問題
問題はRT-23233 です。GIF フレームの背景が正しくありません(サインオンが必要ですが、提供されたリンクから誰でもサインアップして問題の詳細を表示できます)。この問題は、Java 8 以降のリリースで実装される予定です。
原因は、JavaFX が厳密に gif 仕様に準拠しているのに対し、ほとんどの gif レンダリング実装 (たとえば、すべての一般的なブラウザ) はより寛容であり、したがってイメージを異なる方法で (「正しく」) レンダリングすることです。リンクされた RT-23233 は、JavaFX gif レンダラーの実装を緩和して、Age of Empires 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 でレンダリングされたサンプル ページ
Firefox でレンダリングされたサンプル ページ