著者 Mark Stephens & Nadir (IDRsolutions) 翻訳/編集 インターワーク
JPEG XLとは?
JPEG XL (ISO/IEC 18181) は、高い圧縮率と優れた画質を両立した新しい画像形式です。ロスレス圧縮と可逆圧縮の両方に対応しているため、画質を落とさずにファイルサイズを小さくできます。そのため、ウェブサイトでの画像配信の効率化や、レスポンシブウェブ環境向け、クラウドストレージの容量節約に非常に適しています。
JPEG XLはJoint Photographic Experts Group Extra-Largeの略で、従来のJPEGフォーマットから派生した頭字語です。一般的にJPEG XLに関連するファイル名の拡張子は.jxl
です。
JPEG XLの主な特徴は以下の通りです:
- 高圧縮と高画質の両立: JPEG XLは、従来のJPEGやWebPよりも大幅にファイルサイズを削減しつつ、高画質を維持できます。
- ロスレスと可逆圧縮対応: プロ向けの写真やデザイン用途でも、画質を損なわずに圧縮可能です。
- 既存JPEGとの互換性: 従来のJPEGファイルをJPEG XLに変換し、サイズを縮小しながら品質を保てます。
- アニメーション対応: GIFやWebPの代替として、動画像にも対応しています。
- 幅広い色空間サポート: 色彩豊かな画像や写真に適しており、写真やデザイン分野での活用が期待されています。
- プログレッシブデコード対応: JPEG XLは、画像を段階的に高解像度へ表示でき、JPEGよりも効率的にプレビューを素早く提供します。これにより、ウェブでの高速表示とスムーズなユーザー体験が実現します。
JPEG XLの普及
2023年、JPEG XLの普及において大きな進展がありました。Googleは一時的にChromiumでのJPEG XLサポートを終了しましたが、AppleがWWDC23でSafari 17での対応を発表しました。これにより、iOSやmacOSを含む全プラットフォームでJPEG XL画像の表示が可能になりました。この動きはJPEG XLの普及を促進し、Googleの再サポートも示唆しています。Appleが採用したことで、JPEG XL画像を扱う機会が増えてくるのではないでしょうか。
JavaでJPEG XLを読み込む方法
JPEG XLは比較的新しい画像形式で、現在JavaのImageIOやApache Commons Imagingではサポートされていません。そこで、JavaでJPEG XL画像を読み込むための方法をいくつか紹介します。
JPEG XL画像をJxlatteで読み込む方法
Jxlatteは開発中のJPEG XLデコーダーで、JPEG XL形式の画像をPNGなどの一般的な形式に変換できます。以下のコマンドでJPEG XLファイルをPNGに変換できます。
java -jar jxlatte.jar samples/art.jxl output.png
この方法で、JPEG XLを他の形式に変換し、Javaの標準ツールで処理できます。
xpeg-xlラッパーを使ってJPEG XL画像を読む方法
ここには、JPEG-XLライブラリのJavaラッパーがいくつかあります。これらは画像をBufferedImage
に読み込むことはできますが、完全なネイティブ・ソリューションを提供するものではありません。
BufferedImage img = ImageIO.read(Paths.get("/foo/bar.jxl").toFile())
ラッパーを使用すると、JPEG XLを他の画像形式と同様に扱えますが、依存関係の設定が必要です。
JDeliを使用してJPEG XL画像を読み込む方法
JDeliはJPEG XL形式をネイティブにサポートするライブラリで、JPEG XL画像を直接BufferedImage
として読み込めます。JDeliを使用すると、JPEG XL画像を他の形式に変換したり、Javaで直接処理したりできます。
JDeliの使用手順は以下の通りです。
- JDeliのトライアル版JARファイルをダウンロードし、クラスパスかモジュールパスに追加します。
- JPEG XL画像データを、Fileオブジェクト、InputStream、または byte[]で参照します。
- JPEG XL画像をBufferedImageとして読み込みます。
次のコードでJPEG XL画像を読み込めます:
File file = new File("/path/to/image.jxl");
BufferedImage img = JDeli.read(file);
JDeliは、JPEG XLを他の画像形式に変換可能です。標準ライブラリより多くの画像形式に対応し、JPEG XL画像を簡単に扱えます。
まとめ
JPEG XLは、その圧倒的な圧縮効率と高画質により、今後の画像フォーマットとして幅広い利用が期待されています。特にAppleのSafariでの対応が発表されたことで、JPEG XLの普及は大きく前進しました。Webサイトの画像配信、クラウドストレージの効率化、プロフェッショナルなフォトグラフィーやデザインの分野でも活用が進む可能性が高まりました。また、Javaでの実装も容易で、開発者にとっても扱いやすいフォーマットです。
JPEG XLは将来的にインターネット全体で標準フォーマットとして広く利用される可能性があり、今後の動向に注目が集まります。JavaでJPEG XL画像を読み込むには、標準ライブラリが対応していないため、Jxlatte、JPEG-XLラッパー、JDeliなどの外部ライブラリが必要です。特にJDeliはJPEG XLをネイティブサポートしており、最も簡単に画像を読み込むことができます。
Javaで画像を扱う開発には多機能・高性能な開発ライブラリー(SDK) JDeliがきっとお役に立つことと思います。JDeliは無料で試用していただけます。画像フォーマット変換の機能や動作速度などを、まずはご自身の環境でご確認のうえ、ぜひ導入をご検討ください。