TIFF vs PNG vs BMP: ロスレス画像フォーマットの比較
これら3つのフォーマット、実は共通点があるんです
TIFF、PNG、BMPには、どれも一つだけ重要な共通点があります。それは、画像データを一切捨てずに保存できるということです。しかし、この「ロスレス(無劣化)である」という共通の約束事を最後に、類似点はほぼなくなります。それぞれのフォーマットは異なる時代に生まれ、異なる業界のために設計され、異なる妥協点の上に成り立っています。TIFF(Tagged Image File Format)は、1986年にAldus社によって、DTP(デスクトップパブリッシング)やプロのスキャニングの世界のために作られました。PNG(Portable Network Graphics)は1996年、GIFに代わる特許フリーのフォーマットとして登場し、ウェブのためにゼロから構築されました。そしてBMP(ビットマップ)は?これはMicrosoftのオリジナルで、Windows 1.0から搭載され、90年代初頭からほとんど手が加えられていません。この出自がすべてを物語っています。24メガピクセルのRAWファイルを変換すると、TIFFでは68MB、PNGでは22MB、そしてBMPではなんと69MBにもなるのは、そのためです。このファイルサイズの違いは、どれかのフォーマットが本質的に優れているということを意味しません。単に、それぞれの設計思想を反映しているだけなのです。どのフォーマットを選ぶべきかは、常にそのファイルがどこで使われ、どのソフトウェアで読み込む必要があるのかによって決まります。
圧縮:各フォーマットはファイルサイズをどう扱うか
BMPはこの中では最も単純です。デフォルトでは、圧縮を一切行いません。4000 × 3000ピクセル、24ビットカラーの画像は、ディスク上で常にきっかり4000 × 3000 × 3バイト = 34.3MBを占有します。画像の内容は関係ありません。BMPの仕様には技術的にRLE(ランレングス圧縮)オプションが含まれていますが、これはもはや幻の機能です。現代のソフトウェアでこれを書き出すものはほとんどなく、読み込めないアプリケーションも多いです。実用上は、BMPは完全に無圧縮のストレージだと考えて差し支えないでしょう。 PNGはDEFLATEという圧縮アルゴリズムを使用します。これはZIPファイルでも使われている、信頼性の高いものです。圧縮の前に、PNGはフィルタリング処理を行い、ピクセルデータをより圧縮しやすいように並べ替えます。圧縮レベルは0(無圧縮)から9(最大圧縮、最低速)まで調整できます。Photoshopでは、ファイル → 書き出し → 書き出し形式… のダイアログでPNGを選択すると設定できます。結果は画像の内容によって大きく異なります。広いベタ塗り領域を持つロゴなら80〜90%も縮小されるかもしれませんが、複雑なテクスチャやフィルムグレインのある写真では20〜30%程度しか圧縮されないこともあります。高周波数のディテールは、DEFLATEが扱うのが苦手なのです。重要なのは、PNGの圧縮は常にロスレス(可逆)であるということです。レベルを変更しても、影響を受けるのはファイルサイズと保存にかかる時間だけで、ピクセル自体には何の変化もありません。 TIFFはより柔軟なコンテナで、複数の圧縮方式をサポートしています。無圧縮、LZW、ZIP(DEFLATE)、PackBits、さらにはJPEG(これは非可逆圧縮なので、アーカイブ目的でTIFFを使う意味がなくなってしまいますが)も選べます。LZWは最も広くサポートされているロスレスオプションです。Adobe Lightroom Classicでは、ファイル → 書き出し → 画像形式:TIFF → 圧縮:LZW で見つけられます。LZWは通常、無圧縮のTIFFよりも10〜40%小さいファイルを作成します。しかし、それでも同等のPNGよりファイルサイズが大きくなることが多いです。なぜなら、PNGの賢い事前フィルタリング処理が、LZWにはない大きなアドバンテージをDEFLATEアルゴリズムに与えるからです。
色深度とプロ向け機能:TIFFがリードする分野
本格的なプロの現場では、ここがTIFFが他を大きく引き離す点です。PNGはチャンネルあたり最大16ビットの色深度をサポートしており、これはほとんどの写真やウェブグラフィックスには十分ですが、TIFFはさらにその先を行きます。8ビット、16ビット、そして32ビット浮動小数点チャンネルまで扱えるのです。この32ビット浮動小数点のサポートは、ハイダイナミックレンジ(HDR)合成や科学技術計算用の画像処理、そして複数回にわたる重い編集作業を含むあらゆるワークフローで非常に重要です。16ビットフォーマットで保存を繰り返すたびに発生しうる丸め誤差による画質の段階的な劣化を防ぎ、通常のスクリーンが表示できる範囲をはるかに超える輝度値を保存できます。 TIFFはCMYK、つまりプロの印刷業界の言語を話せます。PNGにはできません。雑誌や書籍のためにオフセット印刷所にファイルを送る場合、ほぼ間違いなく300 PPIのCMYK TIFFが求められるでしょう。その世界では、PNGはまったく選択肢になりません。それに、複数ページの機能もあります。50ページのスキャン文書を扱ったことがある人なら、50個の個別ファイルに対処する苦痛を知っているはずです。TIFFはそれらすべてのページを一つのすっきりしたファイルに保存できます。これは文書のアーカイブ、医療用画像、FAXシステムで多用される機能です。PNGにはこれができません。 ではBMPは?論外です。BMPは基本的なカラーモード(1、4、8、16、24ビット、それにアルファ付きの32ビットモード)しかなく、CMYK、浮動小数点データ、複数ページには対応していません。プロの色管理という点では、行き止まりのフォーマットです。 透明度の扱いも重要な違いです。ウェブでの利用においては、クリーンな8ビットおよび16ビットのアルファチャンネルをサポートするPNGが、議論の余地なくチャンピオンです。TIFFもアルファチャンネルを扱えますが、乗算済みアルファのようなより複雑なオプションがあり、ウェブには過剰スペックです。BMPの32ビットモードにも技術的にはアルファチャンネルが含まれていますが、ブラウザやアプリケーションでのサポートがあまりにまちまちで、それに頼るのは避けるべきギャンブルです。
実用例:ワークフローに合わせたフォーマット選び
ウェブの世界では、PNGが王様です。これに議論の余地はありません。ブラウザは90年代後半からサポートしており、アルファ透明はどこでも完璧に機能し、ファイルサイズも軽快です。オンラインで見かけるUIアイコン、背景が透明な商品写真、書き出されたグラフなどは、すべてPNGであるか、あるいはそうあるべきです。見た目が全く同じ1.2MBのPNGが存在するのに、14MBのTIFFスクリーンショットをウェブページで配信するのは、もはや職務怠慢と言えるでしょう。 しかし、印刷所に一歩足を踏み入れれば、そこではTIFFが通貨のようなものです。プリプレス(印刷前工程)作業では、これがプロの標準です。Adobe InDesignやQuarkXPressのようなアプリケーションや、印刷所のRIP(ラスターイメージプロセッサ)ソフトウェアは、TIFFを中心に構築されています。LZW圧縮されたCMYK TIFFは、印刷所が最新のソフトウェアを使っていようと2008年製のものを使っていようと関係なく機能する、鉄壁の納品物です。 この盤石の信頼性こそが、TIFFをアーカイブやデジタル化プロジェクトで選ばれるフォーマットにしている理由です。米国議会図書館や他の国立公文書館が非圧縮またはLZW圧縮のTIFFを規定しているのは、このフォーマットが単一の企業に縛られない、十分に文書化されたオープンスタンダードだからです。 では、BMPの立ち位置はどこにあるのでしょうか?ニッチな存在で、主に特定のWindows中心のタスクで生き残っています。Visual StudioでWindowsアプリケーションを構築していてスプラッシュスクリーンが必要な場合や、レガシーなCADツールを扱っている場合などには、今でも遭遇することがあります。そうした狭い用途の外では、今日、新たにBMPファイルを作成する理由はほとんどありません。 写真編集のパイプライン、例えばLightroomからPhotoshopにファイルを渡してレタッチし、また戻すような場合、LZW圧縮の16ビットTIFFが標準的な「握手」の役割を果たします。16ビットPNGでも機能しますが、このような高ビット深度のデータ交換では、特に古いソフトウェアとの間ではTIFFの方がより普遍的にサポートされています。
ファイルサイズベンチマーク:実際のテスト画像での比較
理論はさておき、数字が本当の物語を語ってくれます。3つの異なる画像を用意し、非圧縮のソースデータから各フォーマットに変換しました。 テスト画像1:森の写真(3840 × 2160、高ディテール、ベタ塗り領域なし) - BMP (24-bit, no compression): 23.7 MB - TIFF (LZW): 19.1 MB - PNG (DEFLATE level 6, default): 17.4 MB テスト画像2:UIのスクリーンショット(1920 × 1080、広いベタ塗り領域、テキスト、アイコンあり) - BMP (24-bit): 5.9 MB - TIFF (LZW): 1.8 MB - PNG (DEFLATE level 6): 0.9 MB テスト画像3:スキャンした文書ページ(600 × 800、白地に黒文字、ノイズは最小限) - BMP (24-bit): 1.4 MB - TIFF (LZW): 0.18 MB - PNG (DEFLATE level 6): 0.12 MB パターンは明確です。写真のようなコンテンツでは、PNGはLZW圧縮のTIFFよりも常に5〜15%ほどファイルサイズが小さくなります。グラフィック要素の多い画像や、ベタ塗りが多いスキャン文書では、PNGの優位性は絶大なものになります。文書スキャンの例では、PNGはBMPの約12分の1のサイズです。何千ページもアーカイブする際には、この差はあっという間に積み重なります。 一つ重要な注意点があります。ZIP(DEFLATE)圧縮で保存されたTIFFは、PNGとほぼ同じファイルサイズになります。なぜなら、両者は同じコアアルゴリズムを使用しているからです。お使いのソフトウェアがTIFF/ZIPをサポートしていれば、このサイズ差は実質的になくなります。Photoshopでは可能ですが、例えばLightroom Classicでは、直接の書き出しオプションとしては提供されていません。
CocoConvertを使ったフォーマット変換
CocoConvertを使えば、Photoshopやコマンドラインツールを立ち上げることなく、TIFF、PNG、BMPの間でフォーマットを変換できます。最も一般的な使い方は、TIFFをPNGに変換してウェブ用にファイルを縮小したり、古いBMPをPNGに現代化したり、ウェブから入手したPNGを印刷ワークフロー用にTIFFに変換したりすることです。 TIFFをPNGに変換する際、CocoConvertは元の品質を維持するように動作します。16ビットのTIFFは、ダウングレードされた8ビットファイルではなく、16ビットのPNGになります。特定の出力が必要な場合は、オプションでビット深度を手動で設定することもできます。 BMPからTIFFやPNGへの変換は簡単です。BMPは非圧縮なので、変換後のファイルはほとんどの場合、元よりも大幅に小さくなります。 CocoConvertが*できない*ことについて知っておくのも重要です。文書スキャナから作られたような複数ページのTIFFは、現在のところ、単一の複数ページファイルとして維持されるのではなく、個別の画像に分割されます。そのような場合は、ImageMagick(`-adjoin`フラグを付けて`convert input.tif output.tif`を実行)やAdobe Acrobatのような専用ツールを使う方が良いでしょう。また、CocoConvertは内部でJPEG圧縮を使用しているTIFFに対してはエラーを返します。これは、破損したファイルを渡されるよりはましな挙動です。最後に、32ビット浮動小数点のTIFFを変換する場合、データはPNGのより限定された範囲に収まるようにクリッピングされます。変換プロセス中にこの点を警告表示するので、データが黙って失われることはありませんが、これは変換先フォーマットの持つ本質的な制限です。 ほとんどの変換、つまり単一の画像をあるフォーマットから別のフォーマットへ変換するだけであれば、プロセスは非常にシンプルです。ファイルをアップロードし、変換先を選んで、ダウンロードするだけ。20MB未満のファイルならアカウントは不要です。
で、結局どのフォーマットを使えばいいの?
これだけ話してきましたが、判断基準はあなたが思うよりずっとシンプルです。選び方はこちらです。 スクリーンで表示するものが目的なら、デフォルトの選択肢はPNGにすべきです。ファイルがウェブサイト、プレゼンテーション、あるいはファイルサイズと互換性が重要なアプリで使われるなら、PNGを使いましょう。専門的な印刷やアーカイブの仕事でない限り、PNGが現代的で安全なデフォルトです。ウェブで透明度が必要なら、もう続きを読むのをやめて、とにかくPNGを使ってください。 プロの編集作業で最高の忠実度が必要な場合や、デジタル世界を離れて印刷物になる場合は、TIFFに切り替えるべきです。印刷所への納品、重要なスキャンのアーカイブ、プロ向け写真アプリ間での高ビット深度ファイルの交換、CMYKカラーでの作業などを行う場合は、TIFFを使いましょう。LZW圧縮のTIFFは、最小のファイルサイズよりも長期的な互換性が重要なあらゆるワークフローで活躍する、頼れるフォーマットです。 そしてBMPは? 特定の、多くは時代遅れのソフトウェアに強制される場合にのみ使用します。Windowsアプリのリソースや、PNGが登場する前の古いプログラムのためのレガシーフォーマットです。それ以外のあらゆるシナリオでは、PNGはBMPができることすべてをよりうまくこなし、より小さなファイルサイズと幅広いサポートを提供します。 最後に、実用的なヒントを一つ。もしBMPファイルを受け取ったら、まず最初にすべきことはPNGに変換することです。変換は完全にロスレスで、劇的に小さく、どこでもより便利に使えるファイルが手に入ります。同じ理屈は、特定のワークフロー上の理由でその形式を維持する必要がない、巨大な非圧縮TIFFにも当てはまります。ピクセル単位の品質を一切犠牲にすることなく容量を節約するために、PNGに変換しましょう。