てもとツール
ガイド

GIFの画質が悪い原因|色がざらざら・縞になる理由と直し方

GIFの画質が悪く見えるのは、1コマに使える色が256色までだからです。写真やグラデーションは近い色に置き換わり、縞かざらざらした点の混ざりになって現れます。症状ごとの直し方と、ファイルの大きさとのつり合い、縁がギザギザになる理由まで、実際に作った数字で説明します。

公開読了目安 約5分

この記事の要点

  • GIFは1コマ256色までで、写真やグラデーションは近い色に置き換わる
  • 縞は色の境目、ざらつきは誤差拡散の点の混ざりで、どちらも256色に収めた跡
  • 256色の例のグラデーションでは、誤差拡散をかけるとファイルが約2.7倍になった
  • 色合いの違う写真を並べるなら、色の表をコマごとにするとずれが小さくなりやすい
  • 縁がギザギザなのは、GIFの透明が透明か不透明の2段階しかないから
目次

GIFの画質が悪く見える一番の理由は、1コマに使える色が256色までしかないことです。 写真やグラデーションは何万色も使っているので、GIFにすると近い色にまとめて置き換わります。

その跡は、なめらかな部分の「縞」か、細かい点の「ざらつき」のどちらかで現れます。 この記事では、2つの症状がどこから来るのかと、症状ごとの直し方を、実際に作ったGIFの数字で説明します。

GIFの色は1コマ256色まで

GIFは、画像の中で使う色を「色の表」に並べ、画素ごとに表の番号を書く形式です。 この表に入る色は、仕様で256色までと決まっています。

例として、左上の青から右下の橙へ色がなめらかに変わる画像(480×160px)を用意しました。 この画像には25,025色が使われていて、GIFにすると256色以下に減らすしかありません。

このツールは、似た色をまとめて1つの色にする方法(メディアンカット)で減らします。 まとめた色と元の色との差が、画質の落ち方として目に見えます。

縞とざらつきは、256色に収めた跡

色をまとめたまま置くと、なめらかに変わっていた部分に、色の境目が段になって出ます。 これが「縞」です。

左が元のグラデーション、右が32色にしたGIF。右は青から橙への変化が、はっきりした四角い段に分かれている

段を目立たなくする方法が「誤差拡散(ディザ)」です。 置き換えでできた色の差を周りの画素に少しずつ配り、細かい点の混ざりで中間の色を表します。

左が元のグラデーション、右が32色で誤差拡散をかけたGIF。段は消えたが、近くで見ると細かい点がざらざらと混ざっている

縞が消える代わりに、近くで見ると点がざらざらして見えます。 写真をGIFにしたときのざらつきは、この点の混ざりです。

色のずれを数で比べると、誤差拡散をかけたほうが1画素ごとのずれは大きく出ます。 例のグラデーションで、元の色からのずれ(RGBの距離)の平均は次のとおりでした。

  • 256色: 誤差拡散なし 3.9・あり 4.8
  • 32色: 誤差拡散なし 10.3・あり 13.1

数が大きくても、離れて見ると誤差拡散のほうがなめらかに見えます。 数字ではなく、実際の見え方で選ぶのが確実です。

症状から直し方を選ぶ

困っている症状ごとに、変えるところをまとめます。

  • なめらかな部分に縞が出る: 色数を256色に戻し、誤差拡散をかけます
  • 点のざらつきが気になる: 誤差拡散を外します。その代わり縞が出やすくなります
  • 写真ごとに色がくすむ: 色の表を、全コマで1つから「コマごと」に変えます
  • 縁がギザギザで、白や黒のふちが出る: 余白を、GIFを貼る先の背景と同じ色にします
  • ファイルが大きすぎる: 誤差拡散を外す・色数を減らす・大きさを小さくする、の順に試します

色の少ないイラストやスクリーンショットは、そもそも256色に収まることがあります。 半透明の画素が無く、256色(透明を使うときは255色)以下に収まる画像なら、元の大きさのまま作れば色を減らさずに済みます。

ただしこのツールで大きさを変えると、隣り合う色のあいだに中間の色ができて、色の数が増えます。 イラストを色のままGIFにしたいときは、元の大きさで作るのがおすすめです。

誤差拡散はファイルを大きくしやすい

GIFは、同じ番号の並びがくり返し出てくると、それを短い記号に置き換えてファイルを小さくします。 誤差拡散で点が混ざると、同じ並びが出にくくなるので、縮みにくくなります。

例のグラデーションで、ファイルの大きさは次のようになりました。

色数誤差拡散なしあり
256色14 KB36 KB
32色4 KB21 KB

256色では、誤差拡散をかけると約2.7倍になりました。 大きさに上限がある送り先なら、先に誤差拡散を外してみるのが手早い方法です。

写真を並べるなら、色の表をコマごとに

GIFには、全部のコマで1つの色の表を使う方法と、コマごとに表を持たせる方法があります。 全部で1つだと、夕焼けと海と森のように色合いの違う写真が、256色を分け合うことになります。

色合いの違う3枚(各240×160px)で比べると、誤差拡散なしでのずれの平均は次のとおりでした。

  • 全コマで1つの表: ずれの平均 4.0・ファイル 24 KB
  • コマごとの表: ずれの平均 2.7・ファイル 37 KB

コマごとにすると色のずれは小さくなりましたが、ファイルは大きくなりました。 大きさを優先するなら全コマで1つ、色を優先するならコマごと、と選び分けます。

縁がギザギザになるのは、透明が2段階だから

PNGは、縁の画素を半分だけ透明にして、なめらかな輪郭を作れます。 GIFの透明は「透明」か「不透明」の2つしかないので、半透明の画素はどちらかに倒すしかありません。

左が縁の半透明な赤い丸、右がGIFにした丸。右の縁は、透明か不透明のどちらかに倒れて階段状になっている

例の丸(160×160px)には、縁に半透明の画素が364個ありました。 不透明度が約50%以上の184個を不透明に、残りの180個を透明にしたので、縁が階段状になります。

このツールは、不透明にした画素の色を「縁をなじませる色」と混ぜて決めます。 混ぜた色と貼る先の背景が違うと、白いふちや黒いふちが出ます。

貼る先の背景が決まっているなら、透明を使わず、余白をその背景の色にするのが確実です。 半透明の画素がその色と混ざって不透明になり、縁がなじみます。

GIFを作り直すときは

ここまでの直し方は、GIFアニメ作成の詳細設定ですべて試せます。 作ったあとに色を変えた画素の割合と、作る前とGIFの絵の見比べが出るので、設定を変えながら比べてみてください。

関連記事

あわせて読みたい

同じテーマ・関連ツールの記事です。