PNG対GIF対JPEG対SVGの異なるユースケースは何ですか?


575

Webサイトやインターフェイスなどを構築するときに、特定の種類の画像ファイルをいつ使用する必要がありますか?

彼らの強みと弱みのポイントは何ですか?

PNGとGIFはロスレスですが、JPEGはロッシーです。
しかし、PNGとGIFの主な違いは何ですか?
なぜ私はどちらか一方を好むべきですか?SVGとは何ですか、いつ使用すべきですか?

すべてのピクセルを気にしない場合、JPEGは「最も軽い」ので、常に使用する必要がありますか?

回答:


1402

いくつかの重要な要素に注意する必要があります...

最初に、2種類の圧縮があります:LosslessLossyです。

  • ロスレスとは、画像は小さくなりますが、品質を損なうことはないことを意味します。
  • ロッシーとは、画像が(さらに)小さくなりますが、品質が低下することを意味します。画像を非可逆形式で何度も保存すると、画像の品質は次第に悪化します。

異なる色深度(パレット)もあります。インデックス付きカラーダイレクトカラーです。

  • インデックス付きとは、画像が、カラーマップと呼ばれるもので、作成者が制御する限られた数の色(通常は256色)しか保存できないことを意味します
  • 直接とは、作成者が直接選択していない何もの色を保存できることを意味します

BMP-ロスレス/インデックス付きおよび直接

これは古い形式です。ロスレス(保存時に画像データが失われることはありません)ですが、圧縮はほとんどまたはまったくありません。つまり、BMPではファイルサイズが非常に大きくなるため、保存することになります。インデックス付きとダイレクトの両方のパレットを持つことができますが、それは小さな慰めです。ファイルサイズが不必要に大きいため、この形式を実際に使用する人はいません。

対象:本当に何もありません。BMPが優れているものはありません。また、他のフォーマットでうまく処理されていません。

BMPとGIF


GIF-ロスレス/インデックスのみ

GIFは可逆圧縮を使用します。つまり、画像を何度も保存でき、データを失うことはありません。実際には適切な圧縮が使用されているため、ファイルサイズはBMPよりもはるかに小さくなりますが、格納できるのはインデックス付きパレットのみです。つまり、ほとんどの使用例では、ファイルに含めることができる色は最大で256色のみです。それはかなり少量のように聞こえます、そしてそれはそうです。

GIF画像はアニメーション化して透明にすることもできます。

対象:ロゴ、線画、その他の小さくする必要がある単純な画像。本当にウェブサイトにのみ使用されます。

GIF対JPEG


JPEG -非可逆/ダイレクト

JPEG画像は、人間の目が気付かない情報を削除することにより、詳細な写真画像を可能な限り小さくするように設計されています。その結果、Lossy形式となり、同じファイルを繰り返し保存すると、時間の経過とともに失われるデータが増えます。数千色のパレットがあり、写真には最適ですが、不可逆圧縮は、ロゴや線画に悪いことを意味します。画像がぼやけているだけでなく、GIFに比べてファイルサイズが大きくなります。

対象:写真。また、グラデーション。

JPEGとGIF


PNG-8-ロスレス/インデックス付き

PNGは新しい形式であり、PNG-8(PNGのインデックス付きバージョン)はGIFの代わりに使用できます。ただし、残念なことに、いくつかの欠点があります。まず、GIFのようにアニメーションをサポートすることはできません(そうすることはできますが、すべてのブラウザーでサポートされているGIFアニメーションとは異なり、Firefoxのみがサポートしているようです)。第二に、IE6のような古いブラウザーでいくつかのサポート問題があります。第三に、Photoshopのような重要なソフトウェアは、フォーマットの実装が非常に貧弱です。(ごめんなさい、Adobe!)PNG-8はGIFのように256色しか保存できません。

良い例:PNG-8がGIFよりも優れている主なことは、アルファ透明度のサポートです。

PNG-8対GIF


PNG-24-ロスレス/直接

PNG-24は、可逆符号化と直接色(JPEGのように何千もの色)を組み合わせた優れたフォーマットです。これは、PNGが実際に画像を圧縮するため、BMPに非常によく似ているため、ファイルがはるかに小さくなります。残念ながら、PNG-24ファイルはJPEG(写真の場合)およびGIF / PNG-8(ロゴおよびグラフィックスの場合)よりも大きいので、本当に使用するかどうかを検討する必要があります。

PNG-24は圧縮しながら何千もの色を使用できますが、JPEG画像を置き換えることを目的としていません。PNG-24として保存された写真は、同等のJPEG画像よりも少なくとも5倍大きくなる可能性が高く、表示品質はほとんど向上しません。(もちろん、これは、ファイルサイズを気にせず、可能な限り最高品質の画像を取得したい場合に望ましい結果になる可能性があります。)

PNG-8と同様に、PNG-24もアルファ透明度をサポートしています。


SVG-ロスレス/ベクター

現在人気が高まっているファイルタイプはSVGです。これは、ベクターファイル形式であるという点で上記のすべてとは異なります(上記はすべてラスターです)。つまり、実際にはピクセルではなく、線と曲線で構成されています。ベクトル画像を拡大表示しても、曲線または直線が表示されます。ラスターイメージを拡大すると、ピクセルが表示されます。

例えば:

PNGとSVG

SVGとPNG

つまり、SVGは、Retinaスクリーンやさまざまなサイズで鮮明さを維持したいロゴやアイコンに最適です。また、画像サイズを低下させることなく、小さなSVGロゴをはるかに大きい(大きい)サイズで使用できることを意味します。これには、ラスター形式のファイル(ファイルサイズの観点から)が別途必要になります。

視覚的に非常に大きい場合でも、SVGファイルのサイズは小さいことがよくあります。ただし、使用する形状の複雑さに依存することに注意してください。曲線と線の描画には数学的計算が含まれるため、SVGはラスターイメージよりも多くの計算能力を必要とします。ロゴが特に複雑な場合、ユーザーのコンピューターの速度が低下し、ファイルサイズが非常に大きくなることもあります。ベクトルシェイプをできるだけ簡略化することが重要です。

さらに、SVGファイルはXMLで記述されているため、テキストエディター(!)で開いて編集できます。つまり、その値はその場で操作できます。たとえば、JavaScriptを使用して、テキストと同じように(つまり、2番目の画像が不要)Web​​サイト上のSVGアイコンの色を変更したり、アニメーション化したりできます。

全体として、ロゴやグラフなどの単純で平らな形状に最適です。

お役に立てば幸いです。


24
すばらしい答えです。あなたはthet追加することもJPEGロスレスことができる(非可逆変異体が主に使用されているが)あまりにも、。
ypercubeᵀᴹ

@porneLいいね!ただし、ファイルを保存する前に不要な詳細を除外するためのハックのようです。たとえば、ファイルを再度保存した場合、JPGとは異なり、これ以上データが失われることはありません。そうですか?
チャックルバット

1
@DjangoReinhardtフィルターハックを使用すると、画像を再保存するときにさらに多くの損失が発生します。しかし、私はそれが非可逆フォーマットまたはエンコーダーの良い定義だとは思わない、AFAIK JPEGのDCTは可逆的であるため、優れたエンコーダーそれ以上の損失を招くことなくJPEGを再保存できます。
Kornel

2
@sudoいいえ、確かにBMPは処理の観点から簡単にデコードできますが、SSDにローカルに保存されていない限り、CPUにファイルを処理するのは、JPGを処理するよりも遅いと思います。 10年または2年前から利用可能なハードウェア命令を使用する、書かれたJPGデコーダ。
Camilo Martin

1
@PirateAppは、うまくいけばあなたの質問に対処するために編集されました
Chuck Le Butt

47

JPEGは、すべての種類の画像(またはほとんどの画像)で最も明るいわけではありません。コーナーと直線、およびプレーンな「塗りつぶし」(無地のブロック)は、圧縮レベルに応じて、ぼやけて見えるか、アーティファクトが含まれます。これは非可逆形式であり、アーチファクトがはっきりと見えない写真に最適です。直線(図面やコミックなど)は、PNGで非常にうまく圧縮され、ロスレスです。GIFは、透明度をIE6で機能させたい場合、またはアニメーションが必要な場合にのみ使用してください。GIFは256色のパレットのみをサポートしますが、損失もありません。

だから基本的にここに画像フォーマットを決定する方法があります:

  • IE6で機能するアニメーションまたは透明度が必要な場合はGIF(注、PNG透明度はIE6以降で機能します)
  • 画像が写真の場合はJPEG。
  • コミックやその他の描画のように直線が必要な場合、または透明度のある広い色範囲が必要な場合はPNG(IE6は要素ではありません)

そして、コメントしたように、何が適格かわからない場合は、さまざまな圧縮率で各フォーマットを試して、画像の品質とサイズを比較検討し、どれが最適だと思うかを選択してください。私は経験則のみを示しています。


3
良い答えですが、以下を追加したいと思います。わからない場合は、それぞれを試して、画像の見栄えとファイルの大きさを確認してください。
ジェシーワイガート2010

最後に、あなたは質問を理解して素晴らしい答えを出しました。ありがとう。IE6の透明性の問題については知りませんでした。
ファルーズ

GIFはかなり古くなっており、私は何もお勧めしません。アニメーションには、多くの最新のアプローチがあります(ビデオ、Flash、JavaScript + SVG)。PNG透明度は、IE 5.5まで機能します(完全ではありませんが、GIFと同じです)。
Tronic

IE 5.5および6は、実際にはGIFと同じ8ビットPNG透明度をサポートしていますが、24ビットPNGのアルファチャネル透明度はサポートしていません。
Graham Conzett、

1
@Tronic、それは本当ですが、それは「簡単」ではありません
Earlz

7

私は通常GIFに比べていくつかの利点があるように見えるので、PNGを使用します。以前はGIFに特許制限がありましたが、期限切れになりました。

GIFは、限られた数の色を持つシャープなエッジのラインアート(ロゴなど)に適しています。これは、滑らかなグラデーションと柔らかな画像を好むJPEGとは対照的に、明確なエッジを備えた均一な色の平坦な領域を好む、形式の可逆圧縮を利用しています。

GIFは、小さなアニメーションや低解像度のフィルムクリップに使用できます。

256色へのGIFイメージパレットの一般的な制限を考慮して、デジタル写真の形式としては通常使用されません。デジタル写真家は、TIFF、RAW、非可逆JPEGなど、より広範囲の色を再現できる画像ファイル形式を使用しています。これは、写真の圧縮により適しています。

PNG形式は、より優れた圧縮技術を使用し、256色の制限がないため、GIF画像の一般的な代替手段ですが、PNGはアニメーションをサポートしていません。PNGから派生したMNGおよびAPNG形式はアニメーションをサポートしていますが、広く使用されていません。


3
PNGはアルファ透明度もサポートします。これはWebグラフィックに非常に不可欠です。
Tronic

5

JPEGは、鋭いエッジなどの周囲の品質が低くなるため、ほとんどのWebグラフィックには適していません。写真が得意です。

GIFと比較して、PNGはより良い圧縮、より大きなパレット、および透明度を含むより多くの機能を提供します。そしてそれはロスレスです。


5

GIFは256色に制限されており、実際の透明度をサポートしていません。GIFの代わりにPNGを使用する必要があります。これは、圧縮と機能が向上するためです。PNGは、ロゴやアイコンなどの小さくてシンプルな画像に最適です。

JPEGは、写真などの複雑な画像をより適切に圧縮します。


4

GIF画像を使用してトゥルーカラーを表示するためのハックがあります。フレーム遅延が0の256色のパレットフレームでGIFアニメーションを作成し、アニメーションを1回だけ表示するように設定できます。したがって、すべてのフレームを同時に表示できます。最後に、トゥルーカラーGIFイメージがレンダリングされます。

多くのソフトウェアは、このようなGIF画像を模倣することができます。ただし、出力ファイルのサイズはPNGファイルよりも大きくなります。本当に必要な場合に使用する必要があります。


3

pngはgifよりも色の幅が広く、gifは適切ですが、pngはそうではありません。gifはアニメーションを実行できますが、通常のpngはできません。png-transparencyは、IE6より大体最近のブラウザーでのみサポートされていますが、その問題に対するJavascript修正があります。どちらもアルファ透明度をサポートしています。一般に、写真、スクリーンショット、または類似のjpegを使用している間は、ほとんどのウェブグラフィックにpngを使用する必要があります。


3

画像あたり256色のパレットに基づくGIF(少なくともその基本的な化身)。PNGは「TrueColour」を実行できます。つまり、1670万色をそのまま使用できます。ロスレスPNGはロスレスGIFよりも圧縮率が高くなります。GIFは「バイナリ」の透明度(不透明度0%または不透明度100%)を実行できます。PNGはアルファ透明度を処理できます。

全体として、アルファ透過画像を使用してIE6をサポートする必要がない場合、ベクターイラストなどにピクセルパーフェクトな画像が必要な場合は、PNGがおそらくより良い選択です。JPGは写真には無敵です。


3

2018年の時点で、いくつかの新しいフォーマット、以前のフォーマットのより良いサポート、および画像の代わりにビデオを使用するいくつかの巧妙なハックがあります。

写真用

jpg -まだ最も広くサポートされている画像フォーマット。

webp- グーグルからの新しいフォーマット。ブラウザのサポートは素晴らしいものではありませんが、可能性は十分です。

アイコンとグラフィックス

svg- いつでも可能なとき。網膜画面で適切にスケーリングされ、テキストエディターで編集可能で、DOMに読み込まれていればJS / CSSを介してカスタマイズできます。

png-ラスターグラフィックが含まれる場合(フォトショップで作成された場合など)。このユースケースで非常に重要な透明性をサポートします。

アニメーション用

svg-さらに、ベクターグラフィックスのcssアニメーション。svgのすべての利点+ cssアニメーションの能力。

gif -まだ最も広くサポートされているアニメーション画像フォーマット。

mp4-アニメーション画像が実際に短いビデオクリップである場合。Twitter / Whatsappはgifをmp4に変換します。

apng-適切なブラウザサポート(IE、Edgeなし)。ただし、GIFほど簡単には作成できません。

webp-mp4の使用に近い。貧弱なサポート

これは、さまざまなアニメーション画像フォーマットの素晴らしい比較です。

最後に、どちらのフォーマットでも、必ず最適化してください。各フォーマット(SVGO、Guetzli、OptiPNGなど)にはツールがあり、かなりの帯域幅を節約できます。


1

主な違いは、GIFは特許を取得しており、もう少し広くサポートされていることです。PNGはオープンな仕様であり、アルファ透明度はIE6ではサポートされていません。IE7ではサポートが改善されましたが、完全には修正されていません。

ファイルサイズに関する限り、GIFはデフォルトのカラーパレットが小さいため、一見するとファイルサイズが小さくなる傾向があります。PNGファイルのデフォルトパレットは大きくなりますが、カラーパレットを縮小して、GIFよりもファイルサイズを小さくすることができます。再び問題は、この機能がInternet Explorerでサポートされていないことです。

また、PNGはアルファ透明度をサポートできるため、バイナリ透明度以外の透明度のバリエーションが必要な場合の唯一のオプションです。


1

JPEGを選択し、Webサイトの画像を処理する場合は、無料で入手できるGoogle Guetzli知覚エンコーダーを検討することをお勧めします。私の経験では、固定品質の場合、ゲッツリはJPEG標準との完全な互換性を維持しながら、標準のJPEGエンコーディングライブラリよりも小さなファイルを生成します(そのため、画像は一般的なJPEG画像と同じ互換性を持ちます)。

唯一の欠点は、Guetzliがかかることである多くの利点が永遠に残っている間、エンコードに時間のを..しかし、あなたがウェブサイトのためのイメージを準備するとき、これは、一度だけ行われます!画像が小さいほどダウンロードにかかる時間が短くなるため、日常的に使用する場合のWebサイトの速度が向上します。


0

GIFには8ビット(256色)のパレットがあり、PNGは最大24ビットのカラーパレットです。したがって、PNGはより多くの色をサポートでき、もちろんアルゴリズムは圧縮をサポートします


0

@aarjithnが指摘したように、そのWebPは写真を保存するためのコーデックです。

これは、アニメーション(アニメーション画像シーケンス)を保存するためのコーデックでもあります。2020年の時点で、ほとんどの主流のブラウザーは標準でサポートされています(互換性表)。注用WIC プラグインが提供されています。

ビデオコーデックVP8に基づいており、GIFよりも広い色範囲を持っているため、GIFよりも利点があります。GIFは256色に制限されているため、2 24 = 16777216色に拡張され、スペースを大幅に節約できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.