GIF を BMP に変換 — 機器が求める形に

GIF を BMP にする変換は、1 コマ目を無圧縮の 24 ビット Windows ビットマップとして書き出します。1 ピクセルにつき 3 バイト、圧縮もパレットもありません。機器や古いプログラムが他の何も受け付けないときに使うもので、すべてブラウザーの中で完結します。

  • 処理される場所 ブラウザーの中です。ファイルがアップロードされることはありません。
  • 非可逆 色はそのまま残ります。BMPは透明部分を保持できないため、切り抜いた箇所は背景色で塗りつぶされます。
  • ファイルサイズの上限 1ファイルあたり100MBまで。無料、アカウント不要です。
  • 知っておきたいこと 変換されるのは最初の 1 フレームだけです。動く GIF は静止画になります。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

GIFからBMPへの変換で実際に起きること

GIF 36 KBBMP 450 KB 12.4 倍

なだらかな階調、やわらかい輪郭、粒状感のある写真です。BMPが想定している、あるいは想定していない典型例で、数値がどちらなのかを示します。 どちらの画像もコードで描き、このページで動くのと同じ変換器でエンコードしています。つまりサイズは当サイト自身の出力です。

GIF 8 KBBMP 450 KB 59.9 倍

背景が透明で、図形にグラデーションがかかっています。BMPは両方を保持するか、片方だけ保持するか、透明部分を単色で塗りつぶすかのいずれかです。ここが見落とされがちな差です。 どちらの画像もコードで描き、このページで動くのと同じ変換器でエンコードしています。つまりサイズは当サイト自身の出力です。

GIF 6 KBBMP 450 KB 72.9 倍

インターフェース、グラフ、ロゴのような、平坦な色と硬い輪郭です。上の写真とは挙動がまったく違い、答えが「ファイルの中身による」になる理由でもあります。 どちらの画像もコードで描き、このページで動くのと同じ変換器でエンコードしています。つまりサイズは当サイト自身の出力です。

GIF は 1 ピクセルに 1 バイト、ビットマップは 3 バイト使います

この 2 つの形式はほぼ同時代——1987 年と 1990 年——に生まれ、同じ問題を逆方向から解決しています。GIF は最大 256 色のパレットへの索引を保存し、LZW 圧縮で圧縮する前で 1 ピクセルあたり 1 バイトです。ここで書くビットマットは、青・緑・赤の 3 値をすべてのピクセルに、無圧縮で保存します。

ですから膨張は 1 つの要因ではなく、2 つが掛け合わさります。GIF が 1 バイトで済ませていたところを 3 バイトにし、そもそも GIF を小さくしていた LZW の節約も一切残りません。40 KB の GIF がその 10 倍のビットマットになるのは珍しくなく、GIF が最も得意な平らな絵で同じ色が続く素材ほど、比率はさらに悪くなります。

変換前にビットマップのサイズを計算する

計算は短く、見積もりの余地がありません。幅を 3 倍して 1 行あたりのバイト数を出し、4 の倍数に切り上げ、高さを掛けて、54 バイトのヘッダーを足します。480 かける 270 の GIF なら 1 行 1,440 バイト(端数なし)、ピクセル部分が 388,800 バイト、合計 388,854 バイトです。

元の絵の内容はこの数字を変えません。激しくディザリングされた写真も、真っ赤な四角形も、同じ 480 かける 270 なら同じ大きさのビットマットになります。すべてのピクセルを文字どおり保存するからです。この予測可能性こそ、機器がビットマップを求める理由です。ヘッダーだけを見ればファームウェアはバッファーを確保できます。

行は下から上へ、すべての行にパディングが入ります

ここで書くビットマップの 2 つの慣習は、間違いに見えて間違いではありません。行は画像の下から上へ向かって保存され、各ピクセルのチャンネルの順序は赤緑青ではなく青緑赤です。どちらも元の仕様どおりで、BMP を読むソフトが期待するとおりです。

3 つ目はパディングです。すべての行は 4 バイトの倍数まで詰められるので、幅 101 ピクセルの画像は 303 バイトのピクセルデータのあとに 1 バイトの何もない部分が続き、1 行 304 バイトになります。幅かける 3 を 1 行のバイト数だと決めてかかるコードは、画像が斜めにずれた結果を作ります。これは自作の BMP リーダーでいちばんよくあるバグです。

アニメーションは GIF の 1 コマ目で止まります

BMP は 1 枚の絵しか持てません。連続、遅延、ループという概念がなく、ここへ届いたアニメーション GIF は開いたときのコマになり、残りは捨てられます。レジストリはこれを組み合わせの注意事項として明記しており、発見任せにはしていません。

ビットマットを求める行き先にとって、これはめったに問題になりません。BMP を求める機器は定義上、静止画を求めているからです。1 コマ目が欲しいコマかどうかは確認する価値があります。多くの GIF は中身が始まる前に空白やタイトルカードで開きます。

256 色だからといってビットマットが小さくなるわけではありません

色が 256 色しかない画像なら小さいファイルになるだろうという予想は理にかなっていて、パレット形式なら実際そうなります。ビットマップの仕様自体、色テーブル付きの 8 ビット BMP をまさに許していて、GIF にほぼそのまま対応します。

この変換機はそれを書きません。作り出すすべてのビットマップは 24 ビットなので、6 色しか使わない GIF も同じ寸法の写真とまったく同じバイト数になります。相手の機器が単に BMP を受け付けるだけでなく 8 ビットパレット形式のビットマットを厳密に求めるなら、このファイルでは足りません。機器が拒否してから知るより、変換前に確かめておく価値があります。

透明色は実際の色にしなければなりません

GIF はパレットの 1 エントリを透明として指定できます。ここで書くビットマットには、24 ビット、3 チャンネル、余白なしで、アルファチャンネルがまったくありません。だから符号化の前に、それらのピクセルには何らかの値を与える必要があります。

背景色のオプションがその値を決め、既定は白です。機器の上ではこれを意図的に選ぶことが重要です。インターフェースが黒い表示先のアイコンは白ではなく黒に平坦化すべきで、あとで反転するのではありません。システムがクロマキーを期待するなら、後の工程が見つけてくれると期待せず、その色そのものを設定してください。

ビットマップを書く前に GIF を縮小する

この変換に画質スライダーはなく、あり得ません。無圧縮は無圧縮で、取引する対象がないからです。唯一のレバーは最大幅で、ピクセルを書く前に絵を縮小するので、ファイルサイズは二乗で変わります。

幅を半分にすればビットマットは 4 分の 1 になります。行き先が小さな表示器ならこれはたいてい正しい選択です。128 ピクセル幅のパネルは 640 ピクセルの元データから何も得るものがなく、ここで縮小しておけば、機器がより大きなバッファーを持つ必要もなくなります。

メタデータ——GIF にはほとんど何もありません

このサイトのすべてのラスター変換は無条件にメタデータを取り除きますが、この組み合わせではその規則はほとんど何もしていません。GIF に EXIF ブロックはなく、カメラの機種も GPS 座標もありません。多くて、それを書いたソフトが残したコメント拡張とアプリケーション拡張くらいです。

ビットマップ形式にはそもそもそれを置く場所がありません。ヘッダーは寸法とビット深度をほぼ説明するだけです。出てくるのはピクセルと形状だけです。画面録画ソフトがコメントブロックに自分の名前を残していたとしても、その名前は渡りません。

ビットマップはあなたの端末で組み立てられます

GIF はブラウザー自身の画像対応で復号され、ビットマップのヘッダーとピクセル行は同じタブの中で JavaScript によって書かれます。この経路にサーバーはなく、アップロードも登録もなく、タブを閉じればファイルはなくなります。

これはこの組み合わせでは見た目以上に重要です。BMP に変換される対象はしばしば社内のもの——コントロールパネルの画像、商品ラベル、計測器の起動画面——だからです。ビットマットになるために誰か他人の基盤を通る必要はありません。

GIF を BMP に変換する手順

  1. お手元の GIF ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に BMP を選びます。変換はブラウザーの中で行われ、ファイルはアップロードされません。
  3. できあがった BMP ファイル をダウンロードします。

GIF と BMP——何が変わるか

GIFとBMPの比較
GIFBMP
正式名称Graphics Interchange FormatWindows ビットマップ
拡張子.gif.bmp, .dib
メディアタイプimage/gifimage/bmp
圧縮方式可逆 — 何も捨てない無圧縮
最初の公開19871987
発行元CompuServeMicrosoft
仕様GIF89a
ライセンスオープン標準公開仕様、標準化はされていない
現在の位置づけ旧式、ただし今もどこでも読める旧式、ただし今もどこでも読める
ビット深度88
扱える色インデックスカラーRGB, インデックスカラー
最大の画像1辺 65,535 px
ブラウザで開けるかすべてのブラウザすべてのブラウザ
代わりに検討される形式WebP, MP4PNG, TIFF

失われるもの

BMP にはアルファチャンネルがありません。透明を含む GIF ファイル から出てくると、その部分は塗りつぶされています——指定がなければ白です——そして BMP 側のどの設定でも、その透明を取り戻すことはできません。

BMP が持てるのは静止した 1 フレームだけです。動く GIF ファイル からは最初のフレームだけが残り、あとは落ちます。この変換はそこから 1 枚の絵を取り出すもので、動きを運ぶものではありません。

結果を開く

GIMPは GIF と BMP のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。

ファイルサイズと品質

BMP はサンプルを生のまま持つので、ファイルは大きく膨らみ、その見返りはありません。この向きに意味があるのは、受け取る側のプログラムが GIF を扱えない場合だけで、実際たいていはそれが理由です。

どちらの形式が何のためのものか

2 つは狙っている用途が違います。GIF はウェブ、BMP はプログラム間のデータ受け渡しです。ここは考える価値があります。一方が存在する理由が、そのままもう一方が使いにくい理由になっていることが多いからです。

GIF は CompuServe の形式です(1987 年に登場)。 記録は 1 チャンネルあたり 8 ビットです。

BMP は Microsoft の形式で、1987 年から使われています。Microsoft Paint、GIMP、IrfanViewがこの形式を読めます。

GIF から BMP:よくある質問

GIF ファイル はどこかにアップロードされますか。

いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。

GIF から BMP への変換は無料ですか。

はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。

GIF を BMP に変換すると品質は落ちますか。

BMP は圧縮するので、データはいくらか失われます。初期設定では気づかない程度ですが、確実にしたい場合は品質を上げてください。 変換されるのは最初の 1 フレームだけです。動く GIF は静止画になります。

GIF から BMP にすると、透明な背景は残りますか。

BMP にはアルファチャンネルがありません。透明を含む GIF ファイル から出てくると、その部分は塗りつぶされています——指定がなければ白です——そして BMP 側のどの設定でも、その透明を取り戻すことはできません。

動く GIF ファイル は BMP になっても動きますか。

BMP が持てるのは静止した 1 フレームだけです。動く GIF ファイル からは最初のフレームだけが残り、あとは落ちます。この変換はそこから 1 枚の絵を取り出すもので、動きを運ぶものではありません。

BMP ファイル が GIF ファイル よりずっと大きいのはなぜですか。

BMP はサンプルを生のまま持つので、ファイルは大きく膨らみ、その見返りはありません。この向きに意味があるのは、受け取る側のプログラムが GIF を扱えない場合だけで、実際たいていはそれが理由です。

これらのフォーマットについて

この数値の出典

このページがGIFとBMPについて述べていることは検証できます。根拠となる資料は次のとおりです。