著者 Amy Pearson (IDRsolutions) 翻訳 インターワーク
通常の画像では、1行目のピクセルが表示され、次に2行目のピクセルが表示されるというように、画像が上から下へ読み込まれるにつれて表示されます。つまり、画像がほぼすべて読み込まれるまでは、その画像をあまり見ることができないのです。もし、画像の4行目(または2行目、10行目)すべてを最初に読み込んでから、その隙間を埋めていけば、すぐに大まかな画像が画面に表示されます(私たちの脳は隙間を埋めるのがとても上手なのですが)。その効果は、画質の低い画像が急速にロードされ、ロードが進むにつれて画質が改善されることです。これがインターレースの特徴です。
インターレースはなぜ使われるのですか?
インターレースは、不鮮明な画像をすぐに見ることができるため、ユーザーに画像の読み込みが速いという印象を与えるために使用されます。現在では、より速いスピードとより高い帯域幅が利用できるため、ほとんどの場合、画像がインターレースであるかどうかは気にならないでしょう。しかし、ファイルサイズが大きい場合や、ユーザーの接続速度が遅い場合には、インターレースが有効です。
インターレースに対応しているフォーマットは?
インターレースに対応しているフォーマットは、GIF、JPEG、JPEG2000、JPEG XR、PNG、PGFです。それぞれ異なるアルゴリズムで実現しています。
インターレースされたJPEG画像は「プログレッシブJPEG」と呼ばれ、ビデオのプログレッシブスキャンと混同しないように注意してください。
Javaのイメージライブラリである JDeliでは先日PNGのインターレースを追加しました。JDeliではBMP、GIF、HEIC、JPEG、JPEG2000、PNG、TIFF、WEBPの画像とPDFに書き出せます。
※PGF (Progressive Graphics File)は、プログレッシブ圧縮を使用して圧縮されたベクター形式の画像ファイルフォーマットです。
※JPEG XRは、高品質な画像を高圧縮率で表現するマイクロソフトが開発した画像フォーマットです。非可逆圧縮と可逆圧縮に対応し、プログレッシブモードで保存可能。静止画像やHDR画像を保存するために使用されています。
メリットとデメリットは?
メリット | デメリット |
---|---|
画像が最初からぼやけた状態だが見える | ファイルサイズが大きくなる |
読み込み時間が早くなったように見える |
1行のコードで画像の読み書きを開始する
読む: BufferedImage image = JDeli.read(streamOrFile);
書く: JDeli.write(myBufferedImage, OutputFormat.HEIC, outputStreamOrFile)