Java2DデモというのはJava 5までJDKに添付、Java 8までは別途ダウンロードで提供されていたJava2Dのデモです。
Java2D Demo!#java #java2d pic.twitter.com/jAMih8ep9j
— きしだൠ(K1S) (@kis) 2022年12月9日
久しぶりに動かそうと思ってJava 5をインストールして、demo/jfc/Java2D/Java2Demo.jarをダブルクリックしてもローディングで止まってました。
Java 5はOracleのアーカイブから。
https://www.oracle.com/jp/java/technologies/java-archive-javase5-downloads.html
Java 8向けはこちら。こっちのほうが余計なJDKのインストール不要なのでいいですね。
https://www.oracle.com/java/technologies/java-archive-misc-downloads.html
ソースもあるので開いて動かそうとしてみると、sun.java.image.codecとかの非標準APIが使われていてコンパイル通りませんでした。(Java 8ではImageIOに変わってるので修正不要。DemoImages
の修正だけでいいです)
ということで、java2d.demos.Images
パッケージのJPEGFlip
を編集します。
import
をコメントアウトして。
//import com.sun.image.codec.jpeg.*;
JPEGCodec
を使ってるコードをImageIO
に置き換えます。
ByteArrayOutputStream out = new ByteArrayOutputStream(); //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); //JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi); //param.setQuality(1.0f, false); //encoder.setJPEGEncodeParam(param); //encoder.encode(bi); ImageIO.write(bi1, "jpeg", out); //FileInputStream in = new FileInputStream(file); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); //JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in); //bi1 = decoder.decodeAsBufferedImage();
ところでパッケージ名が大文字始まりなんですよね。違和感
それと、画像リソースの読み込みでこけてローディングが止まるので、java2d.DemoImages
のコードを書き替えます。
// URLClassLoader urlLoader = (URLClassLoader)cmp.getClass().getClassLoader(); // URL fileLoc = urlLoader.findResource("images/" + name); URL fileLoc = DemoImages.class.getResource("/images/" + name);
これで動くはず。
まあ、書き換えなくてもJava5でそのまま動かせばいいのだけども。