神殿岸2

2と言っても実質1.5みたいなもの

Windows7のペイントでgifを扱う場合の注意

AzPainter2でgifにした千秋

ペイントでgifにした千秋

上の2枚の画像(南千秋)は、どちらも同じ画像からgifに変換したものです。
上は元の画像をAzPainter2というフリーソフトでgif形式で保存しただけのもので、下はペイントでgif形式にして保存したものです。なぜこうした違いが出るのか。
いまさらわざわざgifを使う機会などないと思われているのか、ペイントのgifについてなかなか解説しているところがなかったので、自分で調べたことを本記事に記します。
なお、今回調べたのは主にWindows7のペイントについてで、XPのものとは仕様が異なることを確認していますので、他サイトの説明と異なります。

以下は別の画像を使って解説します。

元画像
戦え!超ロボット生命体トランスフォーマー」より、メガトロン様がレーザーウェーブを絶賛しているシーンです。以下、この画像を元画像として説明します。
この画像はペイントでpng形式で保存したものです。大きさは320×240、ファイルサイズは179KB。32ビットカラーです。
png形式は画質を損なわない保存形式なので、ファイルサイズは大きくなっています。

ペイントでgif化(40KB)
上の元画像を、そのままペイントでgif形式にして保存したものです。保存する際に「画質が低下する可能性があります。」との警告が出ましたが、実際低下しています。
gifは256色しか使えない形式のため、32ビットカラーの画像をそのまま保存することはできません。が、それにしてもひどい画質に見えます。
Win7のペイントは、gifを常に固定の256色で保存します。この固定パレットに含まれていない色は複数の色を組み合わせて再現しようとして、この画像のようになります。
この固定パレットに使われている色を見てみましょう(EDGEという別のペイントソフトで表示したものです。ペイントに現在開かれているパレットを見る機能はありません)。

海底基地のパレット1
鮮やかな赤や黄色はどう見ても使われていませんが…

海底基地のパレット3
使っていない色を削除するとこうなります。gifは256色まで使えますが、この画像の場合は80色しか使われていませんでした。

同じ元画像から、ペイントではなくAzPainter2でgif保存するとこうなります。

AzPainter2でgifにして保存(63KB)
元画像と比べても、ほとんど遜色ありません。

海底基地のパレット2
このようにデストロン的な色をギリギリまで詰め込んだパレットになっています。(正直、ただ保存するだけでここまで綺麗に減色してくれるとは思ってなかった。AzPainter2はすごい)

上のAzPainter2で減色した画像を、ペイントで開いて上書き保存するとこうなります。

AzPainter2でgif化しペイントでgifのまま上書き(39KB)
上書きしただけなのに、見事に画質が劣化しました。もう一度書きますが、Win7のペイントは、gifを常に固定の256色で保存します
実は、XPのペイントは、他のソフトで作られたgifのパレットは破壊しなかったのですが(つまり上記のケースでも破壊は起きない)、Win7のものは破壊する仕様に変更されたようです。
さらに付け加えると、この上書きの際に「画質が低下する可能性があります。」という警告が出ない上、画面上でも保存した直後は画質は劣化していません。一度閉じて開きなおすと、この画像のように劣化したものに変貌しています。
結論を言うと、Windows7のペイントはgifを読むことはできても保存することはできないと思ったほうが良いです。どんなに色数の少ない画像でも、1色でも固定パレットに無い色が使われていれば変色します。しかもペイント上で固定パレットを確認することはできません。まともに保存できるのは白黒2色しか使っていない画像くらいでしょう。

他の例も調べてみます。

元画像をペイントでjpgにして保存したものです。

元画像をペイントでjpgに(37KB)
ほぼ元画像と遜色なし、容量も少なくなっています。XPのペイントはjpgの画質がとてつもなく悪かったのですが、Win7のペイントはjpgの画質が良くなっています。
画質を調整できないので不自由することもあると思いますが、画像の種類によりますが、このデストロン基地のような画像や、写真などであるなら、jpgでも良いでしょう。
ドット画や図形などはpngを使用したほうが良いです。

AzPainter2でgif化しpngで再保存(55KB)
AzPainter2で減色したものをpngにして保存したものです。画像自体はgifと全く変化していませんが、256色pngはgifより圧縮率が高いため、ファイルサイズが小さくなっています。それでもこの画像の場合はjpgのほうが向いているようです。

AzPainter2でgif、pngと変換したものをペイントで上書き(151KB)
そのAzPainter2でpngにした画像(55KB)をペイントでpngのまま上書きしただけですが、容量が増えています。32ビットカラーになっているためです。Win7のペイントは、ほとんどのpngを無条件に32ビットカラーにして保存するようです。
XPのペイントは、他ソフトで作った256色pngを256色pngのまま保存できましたが、Win7ではできなくなったようです。
(なお、白黒bmppngで保存し直した場合のみ「1ビットカラーのpng」を作ることができました)

しかし、圧縮率を指定できないものの、pngの圧縮率そのものは大変高いようです。
上の元画像は32ビットカラーですが、どうしたわけかAzPainterで24ビットカラーにしたものより軽くなっています。この理由は申し訳ありませんがわかりません…

最後にXPのペイントについても少し。
XPのペイントは「あらかじめ他のソフトで作った256色画像」については正常に上書きできます。そのため、「一旦パレットを作ったgifを読み込み、そこから画像を編集する」という方法で256色のpngやgifを作ることができました。
しかしながら、それを読み込んだ状態では「パレット内の色しか使えないモード」に変化します。
極端な例を挙げると、「白・黒・グレーのみのgif画像」を読み込んでから、赤や青で線を引こうとすると、色を選択しているのに黒や白で線が引かれることになります。
このような不自然な状態を防ぐために、Win7のペイントは256色モードを封印したようです。その結果pngはフルカラー、gifはまともに保存できなくなったということのようです。