Snow Flower IIO は JavaFX IIO (Image IO) を拡張するライブラリです。JPEG 2000 や TIFF 画像を JavaFX Image API で直接扱うことができるようになります。JavaFX 標準API から透過的に利用できるので開発者は追加の学習なしに利用できます。
- 特徴
JavaFX の Image API をそのまま利用
JPEG デコードの高速化
少ないメモリーでサムネイル画像を生成
対応画像形式の追加
TIFF
JPEG2000
Microsoft ICO
JavaFX Image API の利点
JavaFX Image API には、ロード時にサイズを指定できる機能が備わっています。スケーリングする際に使用するフィルタリングの品質、および元のイメージの縦横比を保持するかどうかをアプリケーションで指定できます。これは javax.imageio.ImageIO にはない機能です。サムネイル画像を生成する場合に JavaFX Image API を使用することで javax.imageio.ImageIO API を使用するよりもメモリーの最大使用量を低く抑えることが出来ます。
対応している画像形式の比較
次の表は Web プラットフォームと JavaFX Image API と Snow Flower IIO の対応画像形式を比較しています。
Image Format | Web | javafx.scene.image.Image | Snow Flower IIO |
---|---|---|---|
JPEG | Yes | Yes | Yes1 |
BMP | Yes | Yes | Yes |
GIF | Yes | Yes | Yes |
PNG | Yes | Yes | Yes |
TIFF | No | No | Yes |
JPEG2000 | No | No | Yes |
ICO | No | No | Yes |
JavaFX 標準のImage API がサポートしている画像形式は Web ブラウザと同等ですが、Snow Flower IIO は JavaFX 標準ランタイムがサポートしていないネイティブアプリで使用されることの多い画像ファイル形式のサポートを追加しています。
Web ブラウザで利用可能な画像ファイル形式は代表的な Webブラウザである Safari、Internet Explorer、Chrome、Firefox で共通して利用できるものに限定しています。
Snow Flower IIO は最もよく使われていると考えられる JPEG ファイル形式のローダーを高速ローダに置き換えています。JavaFX 標準 API サポート対象範囲においても改善を行っています。
JPEGデコードの高速化 JPEGファイルのデコードの際には Snow Flower IIO は JavaFX 標準ランタイムで使用される libjpeg ライブラリの代わりに libjpeg-turbo を使用します。libjpeg-turbo は SIMD (MMX, SSE, SSE2) 最適化によって、libjpeg よりも約2倍から4倍程度高速にデコードします。 |
API の利用方法
JavaFX の Image API をそのまま利用できます。
import javafx.scene.image.Image;
Image image1 = new Image("sample.jpg");
Image image2 = new Image("sample.jp2");
Image image3 = new Image("sample.tiff");
画像のファイルへの書き出しは JavaFX Image では現在のところサポートがないので AWT/Image(BufferedImage) に変換して javax.imageio.ImageIO を使って出力します。
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
BufferedImage bimg = SwingFXUtils.fromFXImage(fximage, null);
ImageIO.write(bimg, "image/png", new File("out.png"));
動作環境
Snow Flower IIO ライブラリはJavaVM の動作するすべての環境で動作しますが、JPEG のアクセラレーションは次のプラットフォームでのみ有効になります。対応していないプラットフォームでは標準のローダが使用されます。
Mac OS X
Mac OS X 10.12 Sierra and later. x64
Windows
Windows 7 and later x86
Windows 8 and later x64
Linux
Linux x86
Linux x64
関連文書
Snow Flower Controls 概要
参考
フォーマット