[Java]JavaFXでImageを絶対パスから作成するTips

BufferedImageとの比較をしようと思って失敗したので。2種類。

広告

BufferedImageから変換

 よくあるやつ。絶対パスを格納したStringクラスのオブジェクトpathをあらかじめ作成しておいて、


try{
BufferedImage bi = ImageIO.read(new File(path));
}catch(IOException e){
}
Image img = SwingFXUtils.toFXImage(bi,null);

 尚勿論変換の手間のぶん、処理時間がかさむ。

URLに変換して叩き込む

Image img = new Image(new File(path).toURI().toURL().toString();

なぜ絶対パスからそのままは無理か

 どうやらリソースパスにおいてあるイメージへの相対参照をきかせる処理を内部でしているらしく、普通の絶対パスだと通らない模様。

参考URL

絶対パスからの理由がダメな理由の参考:

上記2つのコードの参考:


結局、BufferedImageとの比較はできたのか


に書いてあったことを考えると、JavaFXのウィンドウを起動しないと処理できないみたいです。テストのためにわざわざそうするのもあれだなと思いつつかいてみたら、JavaFXの窓起動に時間がかかるし、処理時間も同程度だし、まあいろいろでやめました。この辺便利なクラスできないかなあ。

広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA