分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
ICO を BMP にする変換は、アイコンの入れ物の中でいちばん大きな絵を、無圧縮 24 ビットのビットマップとして書きます。どの Windows のリーダーも受け入れる素の形式です。その形式にはアルファチャンネルがないので、透明な部分は選んだ色で埋まり、ファイルはかなり大きくなります。
一度に100ファイルまで。フォーマットが混ざっていても構いません。
順番に変換し、まとめてZIPでダウンロードします。
ICO から BMP
ICO 139 KB → BMP 450 KB 3.2 倍
ICO 7 KB → BMP 450 KB 64.4 倍
ICO 3 KB → BMP 450 KB 175.2 倍
どちらも Microsoft から出て、一緒に設計されました。元のアイコン形式はそもそも別の画像を包んではおらず、それぞれのエントリはビットマップのヘッダーに続いて色データと、どのピクセルをそのままにするかを示す 1 ビットのマスクを持っていました。ICO は文字どおり、型紙の付いたディレクトリの中のビットマップでした。
そこから 2 つは分かれていきました。アイコンは Windows XP で本物の 8 ビットアルファチャンネルを、Vista で PNG のペイロードを運ぶ能力を得ました。今の大きなアイコンエントリはこの PNG を使っています。この変換機が書くビットマットはどちらも得ていない 24 ビットのベースラインです。ですから一方から他方への変換は能力の後退で、相手先が求めているからこそ行うものです。
符号化器は 1 ピクセルあたり 24 ビット——青 8、緑 8、赤 8——だけを書き、それ以外は何もありません。アルファチャンネルを定義する BMP のヘッダー変種は存在し、それを使うファイルもありますが、確実に読めるソフトはほとんどなく、それこそ BMP が選ばれる理由である信頼性の問題そのものです。
ですから透明はどこかへ行かなければならず、それを決めるのが背景色の設定です。既定は白です。ビットマットが描かれる面の色——インストーラーのバナー背景や組み込み表示器のパネル色——を選んでください。透明な角を持つテスト用アイコンでは、結果の角は 255,255,255 と読め、パネルが濃い灰色なら、それは間違った答えになります。
これは欠陥ではなく BMP が存在する理由そのものです。すべてのピクセルは中身に関わらず 3 バイトを占めるので、ファイルサイズは結果ではなく算数です。幅かける 3 を 4 の倍数に切り上げ、高さを掛け、54 バイトのヘッダーを足します。
256 ピクセル四方なら 1 行 768 バイトでピクセル部分が 196,608 バイト、合計 196,662 バイトです。元になった 8,471 バイトのテストアイコンと比べると、ビットマットは 23 倍以上の大きさです。行き先に容量の上限があるなら、変換の前にこの掛け算をしておいてください。
ファイルの中でいちばん大きなものです。復号はブラウザー自身のアイコンリーダーが行い、ディレクトリの中でいちばん大きなエントリを返します。16、32、48、256 ピクセルの絵を 4 色で描き、ディレクトリの順番を 3 通りに変えて確認しても、256 ピクセルの絵が毎回選ばれました。
より小さいエントリはどこにも書かれず、それに届く設定もありません。渡すソフトが 32 ピクセルのビットマットを求めていて、アイコンが 32 ピクセルのエントリを持っているなら、GIMP のようなアイコン編集ソフトでその層を直接書き出すほうが、256 ピクセル版を縮小するよりよい結果になります。
ファイルを開くのではなくバイトを読む場合に知っておくべき 2 点があります。BMP は画像の下から上へ行を保存し、各ピクセルを青、緑、赤の順で保存します。どちらも仕様どおりで、どちらも初めて解析する人を驚かせます。
すべての行は 4 バイトの倍数まで詰められ、これは幅が中途半端なときに重要です。幅 33 ピクセルのビットマットは 1 行あたり色データ 99 バイトにパディング 1 バイトが加わり、保存される行は 100 バイトになります。256 ピクセルなら行は 768 バイトでパディングが不要になり、アイコンサイズのビットマットが手作業で扱いやすい理由の 1 つです。
読むのに復号器が要らないからです。小さな表示器を駆動するマイクロコントローラーは、ループとヘッダーのオフセットだけでファイルからフレームバッファーへバイトをコピーできます。そのファームウェアに PNG の復号器を足すことは、32 KB しか RAM を持たないかもしれない機器に、展開器とメモリー確保とチャンク解析器を足すことを意味します。
同じ理屈がインストーラーのリソースにも、プラットフォーム自身のビットマップ関数を通じてリソースを読み込む古い Windows のコントロールにも、符号化方式を介さずバイト単位で画像を比較したいテストの土台にも当てはまります。そのどれにおいても、予測可能性はサイズよりはるかに価値があります。
どちらの形式も可逆で、この経路には品質設定がありません。取引する対象がないからです。平坦化を生き延びたすべてのピクセルは、アイコンが保存していたものとビット単位で一致するので、同じファイルを 2 回変換しても結果は同一で、あとで再びこの工程を通っても世代劣化を心配する必要はありません。
本当に失われる 2 つは、背景色に置き換わるアルファチャンネルと、入れ物の中の他のエントリです。どちらもビットマットから後で回復できないので、これが元のアイコンファイルを置き換えるのではなく保持しておくべき理由です。
行き先が厳密な要件ではなく好みとして述べる現代のソフトなら、PNG は 2 桁小さく、透明も保ちます。同じテストアイコンは PNG として 1,737 バイト、ビットマットとして 196,662 バイトでした。BMP が本当に必要かどうかをメールで一度確認する価値のある差です。
答えが「はい」の場合——ファームウェア、インストーラーのスクリプト、バイト単位で比較するテスト——ビットマットは正しく、そのサイズは復号器なしで読める代償です。それをコミットメッセージに書いておいてください。小さなアイコンに対する 200 KB のファイルは、次にレビューする人には間違いのように見えます。
セット全体を置いてください。それぞれのファイルが復号され、同じ背景色で平坦化され、別々に書き出され、まとめて ZIP で返ります。バッチ全体で共通の背景色を使うのが、これらの行き先ではたいてい正しい選択です。画像は 1 つの面に合成されるからです。
結果の寸法は思い込まず確認してください。何年もかけて作られたアイコンセットは、256 ピクセルに達するエントリと 32 ピクセルで止まるエントリが混ざっていて、ビットマットもその幅を引き継ぎます。両極端でファイルサイズに 64 倍の差が出ます。
| ICO | BMP | |
|---|---|---|
| 正式名称 | Windows アイコン | Windows ビットマップ |
| 拡張子 | .ico | .bmp, .dib |
| メディアタイプ | image/x-icon | image/bmp |
| 圧縮方式 | 可逆 — 何も捨てない | 無圧縮 |
| 最初の公開 | 1985 | 1987 |
| 発行元 | Microsoft | Microsoft |
| ライセンス | 公開仕様、標準化はされていない | 公開仕様、標準化はされていない |
| 現在の位置づけ | 限定的 | 旧式、ただし今もどこでも読める |
| ビット深度 | 8 | 8 |
| 扱える色 | RGB, インデックスカラー | RGB, インデックスカラー |
| 最大の画像 | 1辺 256 px | — |
| ブラウザで開けるか | すべてのブラウザ | すべてのブラウザ |
| 代わりに検討される形式 | PNG, SVG | PNG, TIFF |
BMP にはアルファチャンネルがありません。透明を含む ICO ファイル から出てくると、その部分は塗りつぶされています——指定がなければ白です——そして BMP 側のどの設定でも、その透明を取り戻すことはできません。
GIMPは ICO と BMP のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。
BMP はサンプルを生のまま持つので、ファイルは大きく膨らみ、その見返りはありません。この向きに意味があるのは、受け取る側のプログラムが ICO を扱えない場合だけで、実際たいていはそれが理由です。
2 つは狙っている用途が違います。ICO はウェブ、BMP はプログラム間のデータ受け渡しです。ここは考える価値があります。一方が存在する理由が、そのままもう一方が使いにくい理由になっていることが多いからです。
ICO は Microsoft の形式です(1985 年に登場)。 記録は 1 チャンネルあたり 8 ビットです。
BMP は Microsoft の形式で、1987 年から使われています。Microsoft Paint、GIMP、IrfanViewがこの形式を読めます。
いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。
はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。
BMP は圧縮するので、データはいくらか失われます。初期設定では気づかない程度ですが、確実にしたい場合は品質を上げてください。 変換先の形式は透明を扱えないため、透明だった部分は背景色で塗りつぶされます。
BMP にはアルファチャンネルがありません。透明を含む ICO ファイル から出てくると、その部分は塗りつぶされています——指定がなければ白です——そして BMP 側のどの設定でも、その透明を取り戻すことはできません。
BMP はサンプルを生のまま持つので、ファイルは大きく膨らみ、その見返りはありません。この向きに意味があるのは、受け取る側のプログラムが ICO を扱えない場合だけで、実際たいていはそれが理由です。