Help:JPEG画像を減色しPNG画像として保存する方法
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ウィキペディアの記事内で使用されている有益な図や画像のなかには、実際はPNGフォーマットの方が適しているのに、JPEGフォーマットで保存されているものが時々あります。JPEG形式は色が流動的に変化し多段階の色調で表現される写真のような画像に適しています。それに対し、PNGは比較的色数が少なく、色の変化や色の境界がはっきりした国旗・表・地図等の画像に適しています。
そこで、JPEGからPNGへ変換する必要が生じますが、JPEGからPNGへ自動的に変換するだけでは、きれいな画像は作れません。元のJPEGファイルよりも容量が大きく、質も落ちてしまうことが多々あります。しかし、使い慣れているグラフィックソフトウェアなどがあれば、うまくPNGへの変換ができます。
[編集] JPEGからPNGへの自動変換の問題点
数千色以上の画像を保存する場合(写真のように、シェードとトーンのきめ細かいグラデーションがあるのが典型的)、JPEGファイルとして保存するのが無難です。JPEGの圧縮方法は、自然の景色にあるような階調度と柔らかいエッジを活用することができるので、そういった画像を保存するのに最適です。
一方、PNGは劣化の少ない圧縮方法を用いており、各ピクセルごとに描かれているものを、そのまま正確に保存することができ、グラフや、国旗などの旗、地図、漫画などのような画像を保存するのに非常に適しています。鋭いエッジで、広い範囲に渡り単一な色で描かれている画像に対しての圧縮に最適なのです。
それに加え、PNGフォーマットは非常に汎用的でもあります。PNGを“True Color”モードで保存した場合には、人間の眼で識別できないほど多くの色数が含まれていて、JPEGよりも細かいディテールのある画像を保存することもできます。ただし、True ColorのPNGで保存した場合、そのような画像を保存する最適な圧縮方法ではないため、容量の大き過ぎるファイルになってしまいがちです。
単にJPEGをPNGに自動変換した場合、このようなTrue Color PNGが作成され、サイズの大きなファイルができてしまうことが多いです。そのようなPNGは、アップロードを行う前にインデックス化したり、インデックスパレットモードで変換するべきです。ほとんどの画像編集ソフトでは、True Colorモード(「フルカラー」や「RGB」モードとも呼ばれる)からインデックス画像に加工した時に使用する色数を決め、変換することができます。どれくらいの色数を使用するべきかは、画像に依存します。インデックス画像にするには256色以下でなくてはならず、しばしば16色、もしくはそれ以下の色数に指定した方がうまく画像を加工できることがあります。「エラー補正」や「ディザリング」機能を用いることでよりよい加工ができることもあるでしょう(これらのオプションを使用したくないかもしれませんが)。自分の希望通りの加工ができるまで、何度も試してみるべきです。ツールによっては、ファイル内の色数をカウントする機能もあります。
[編集] JPEGで保存してしまった画像をPNGに適するように加工する方法
なんらかの理由で国旗のような画像をJPEGファイルとして保存してしまった場合、肉眼でも同じに見えるような近接している色が、不要に含まれてしまっていることが多々ありますが、実際のデータ上はこういった近接している色もすべて異なった色として記録されています。通常のPNGの圧縮方法では、これらの色の相違を必要以上に保持してしまうので、PNGで保存し直しても希望通りにファイルサイズを縮小できない可能性があります。それを防ぐためには、以下に記される方法で、実際に必要としている色数以上を含まないように、確認することが必要です。
ここでは、ビットマップ編集を行う利用者の多くが使用している画像編集ソフト、GIMPおよびAdobe Photoshopを使用しての変換方法を紹介します。
-
うっかりJPEGで保存してしまったフランスのロレーヌ地方の旗があるとします。多少ぼやけているかもしれませんが、見た目は問題ありません。
-
ビットマップ編集ソフトで、まったく同一の色のピクセルのみを選択できるように、[隣接(色)領域の選択]ツール(Adobe Photoshopの場合は[自動選択ツール])を起動し、自動選択のしきい値を設定します(ここではGIMPを使用し、[レイヤー結合色]のしきい値=0にします)。
-
右上の山吹色の背景部分をクリックします。山吹色の部分内のすべてのピクセルが選択されているのではないことに注目してください。JPEGで保存するとこのように不要な色情報を保持してしまうことが多く、ほとんどの場合その差異は肉眼では確認できません。
-
[隣接(色)領域の選択]ツールを再度設定し、もう少し適切に近接色を選択できるようにします。
-
図で見てわかる通り、山吹色の部分が先ほどより多くの部分で選択されています。赤色の部分は含めず、右上の山吹色の部分すべてを選択できるように設定してみましょう。状況に応じては、手動で目に見えるまだらになっている部分を取り除く必要もあります。
- 上のように設定を行った後、山吹色の部分に適した色を選択し、エリア全体が塗りつぶされているか確認してください。使用するアプリケーションごとにその方法は異なります(GIMPの場合、[近接色域選択ツール]でエリアを選択した後、[画像から色を選び出す]で色を自動判別し、画像の上で右クリックして[編集]-[前景色で塗りつぶし]を実行。Photoshopの場合、[自動選択ツール]でエリアを選択した後、[スポイトツール]で色を自動判別し、[編集]-[描画色で塗りつぶし]を実行)。
- 画像が右上と左下の山吹色と、中央の赤と、白い鳥マークとその枠の黒と、それらのエッジの中間色のみになったら、16色ほどまで色数を落とし、インデックスPNG画像として保存することができます。うまく行くまで何度か試してみましょう。
このような作業を行うことによって、元のJPEG画像よりもファイルサイズが小さく(これにより閲覧者側の画像ダウンロード時間も短縮される)、より鮮明でクリアな画像(JPEGではよくぼやけたエッジとにじみが、本来の色がスムーズである領域に生じてしまうことが多い)へ加工することができるでしょう。
もちろん、グラフィックソフトで16色を指定し保存し直すだけで、上記の作業を短時間で行い、同じ加工結果が得られることもあります。しかし、対象の画像にJPEG圧縮特有の染みやモアレができている場合、色数を指定するだけではうまくいきません。