16

ImageMagick を使用して、一部のファイルをある形式から別の形式に変換しています。私は常に、.png ファイルは .jpg と同じ大きさ/小ささである必要があり、.gif よりも確実に小さいという印象を受けていました。

しかし、私が走るとき

convert photo.jpg photo.png 

私が取得しているファイルは、元の jpg の約 6 倍の大きさです。
元の jpg は通常の写真で、約 300x500 px、52 kb です。出力は同寸の適当なpngですが、サイズは307kbくらい?

ハッキングが行われていることを知っている人はいますか? 私は何か間違ったことをしていますか?

PS:

Debian と Windows の両方で試してみましたが、結果は同じでした。

PPS:

また、これにサイズ変更オプションを追加して、10000 x 10000 にサイズ変更すると、jpg への変換とサイズ変更には数秒かかりますが、png と同じことを行うと、strt が完全にメモリ不足になります。

PPPS: この質問をPNG と GIF と JPEG と SVG の重複としてマークし続ける人のために - いつ使用するのが最適ですか? . よく読んで質問を理解してください。この質問は、特定のアプリケーション (イメージ マジック) を使用してプログラムで生成されたファイルについて尋ねるため、重複ではありません。重複としてマークした質問は、Web で使用するのに適した画像形式を尋ねることです。2 つの異なる質問。

4

6 に答える 6

16

ここで重要なことは、各画像ファイル形式が特定の目的に最適であるということです。

JPEGは「Joint Photographic Experts Group」の略です。.JPG ファイル形式が写真用に最適化されていることがわかります。線画、ロゴ、グラデーション、タイル/パターンの背景などにはあまり適していません。.JPG の DCT (Discreet Cosine Transform) アーティファクト (誰もが知っていて嫌いな「ブロック状」のアーティファクト) は、写真よりも線画やロゴの方がはるかに目立ちます。

PNG は、アニメーションという明確な基準が現れていないという理由だけで、GIF がこれまで有効だったすべてのものを GIF に置き換えました。アニメーション化された .GIF は Web でよく知られています。アニメーション化された .PNG には、APNG と MNG という 2 つの競合する標準があります。

APNG は最新のほとんどのブラウザーでサポートされており、完全な後方互換性もあります (ファイル拡張子は .APNG ではなく .PNG です。.PNG を表示できるが APNG を知らないプログラムが APNG を「フィード」している場合、それは開発者が選択した代用画像、またはそのような代用が提供されていない場合はアニメーションの最初のフレームのいずれかを表示します。古いプログラムに関する限り、それはその 1 つの画像を含む通常の単一フレーム .PNG です。残りは安全に無視されます)。Gecko (FFなど) や Presto (Opera) はネイティブでサポートされており、Google Chrome (Webkit を使用) はアドオンでサポートされています。

MNG は実際の PNG 形式の開発チームの支援を受けていますが、独自の形式で後方互換性はありませんが、より強力で柔軟です。現在、KHTML ベースのブラウザー (Konquerer) のみがサポートしています。Trident (IE)、Gecko、Webkit (Chrome、Chromium、Safari)、Presto はサポートしていません。

PNG は、GIF が行うすべてのこと (APNG で強化されていない限り、アニメーションを除く) を行います。他のすべてが等しい場合、.PNG はほとんどの場合、同じ解像度とビット深度で .GIF よりも小さくなります。.GIF と同様に、.PNG はインデックス付きカラー (パレット) モードでピクセルあたり最大 8 ビットの色深度をサポートできますが、.GIF とは異なり (.JPEG と同様)、ピクセルあたり 24 ビットのダイレクト カラー モードもサポートします。

どちらのモードでも、8 ビットのアルファ透明度を追加できます。.GIF とは異なり、.GIF (インデックス付きの色の透明度のみを行うことができます [パレットから色を選択して、100% の透明度、別名非表示に置き換えます] — .PNG もそれを行うことができます)。 )。アルファ透明度は、インデックス付き透明度よりもはるかに優れた結果を生成します透明ですが、インデックス付きの透明度 (.GIF で使用できる唯一の種類) では、不透明または非表示のいずれかを選択できます。これにより、.GIF またはインデックス付きの .PNG が元々「つや消し」されていた背景色以外の背景色に対して配置された場合、非長方形オブジェクトの周囲に「光輪」ができます。また、グロー、ドロップ シャドウ、およびもちろん、シースルー色のオブジェクト (ディザリングなし) などの効果を実行することもできなくなります。アルファ透明度は、ほぼすべての背景に対してこれらすべてを簡単に行うことができます (グローは白い背景ではほとんど見えず、ドロップ シャドウは黒い背景ではほとんど見えませんが、言いたいことはわかります)。

はい、インデックス付きカラーの.PNGで8 ビットのアルファ透過を行うことができます! そして、何を推測しますか?Microsoft Internet Explorer 6 でさえ、完全に透過的に表示できます。IE6 が窒息して灰色で表示されたのは、32 ビットの .PNG (24 ビットの RGB カラー + 8 ビットのアルファ) だけです!

アルファ透明度を使用して PNG8 (インデックス付きカラー) をエクスポートできる最も有名なプログラムは、Adobe (以前の Macromedia) Fireworks です。Adobe が Macromedia を買収したときに、基本的に Fireworks からこの機能を削除したにもかかわらず、Photoshop の「Web およびデバイス用に保存」(少なくとも CS3 では) はそれを行うことができませんでした。PNG8 を保存できますが、インデックス付きの色の透明度のみです。

とにかく、フル 32 ビット (または 24 ビット) の PNG はかなり大きくなりますが、通常、最も近い同等の .BMP または .TGA または非圧縮の .TIFF などよりもはるかに小さくなります (それ — それが JPEG の目的です!)。通常は、.RLE (無損失圧縮の .BMP) または無損失圧縮の .TIF よりもいくらか小さくなります。他のすべては同じです。

これらの他のほとんどの形式とは異なり、PNG は 48 ビットの RGB カラーもサポートし、オプションで 16 ビットのアルファ透明度を使用して、非常に高品質 (ほとんどのモニターが表示できるよりもはるかに高い) を実現します。これらは、高ビット深度のスキャナやカメラ (RAW モード) などからの情報を保持するための中間ストレージ形式として使用するのに最適です。ロスレス圧縮にもかかわらず、ファイル サイズはかなり大きくなります。

.PNG が現在実行できないことの 1 つは、CMYK や L*a*b などの非 RGB カラー スペースの処理です。

要するに:

  • 写真の場合は、.JPG を使用します。
  • 限られた色のライン アートとロゴには、必要に応じてアルファ透明度を使用して、インデックス付きカラーの .PNG (PNG8) を使用します。
  • 豊富な色の線画とロゴ (多数のグラデーション塗りつぶし、メタリック クローム タイプの反射効果など) の場合、最高の品質が必要な場合や透明度が必要な場合は、必要に応じて直接色の .PNG (PNG24) をアルファ付きで使用します ( IE6 で動作しないことや、透過 PNG 用のさまざまな IE6 回避策のいずれかを使用することを気にしないでください)。また、より大きなファイルと帯域幅の使用を気にしません。それ以外の場合は .JPG を使用しますが、品質が低下することに注意してください。特にロゴやその他の「テキスト」を含むグラフィックの場合は、JPEG の品質をかなり高くする必要がある場合があります。これにより、ファイル サイズの節約が減少します。
  • 非 Flash/Silverlight/video/HTML5 Canvas アニメーションの場合、現時点では .GIF が主な選択肢ですが、APNG に切り替える準備をしておいてください (JPEG からのより公式なサポートにもかかわらず、MNG がそれに勝るとは思いません開発者)。
于 2012-03-13T23:09:24.217 に答える
13

JPGは不可逆圧縮アルゴリズムですが、PNGは可逆圧縮アルゴリズムです。

この事実だけでも、(一般的に)JPG画像はPNG画像よりも小さくなります。各形式の圧縮率を微調整できるため、PNGファイルをJPGファイルほど圧縮していない可能性もあります。

写真画像の場合、JPGとして保存すると、圧縮を使用するための画像のノイズやランダム性が高くなるため、通常はPNGよりも小さいファイルが生成されます。グラフィックアートツールで作成された画像は、PNGでよりよく圧縮される、よりハードなエッジと単色の領域を持つ傾向があります。

画像にテキストが含まれている場合、JPGを使用した場合のように文字の硬いエッジがぼやけることがないため、PNGはより高品質の画像を生成します。

GIFは、JPGおよびPNGの各ピクセル(またはピクセルのグループ)の個別のRGB値ではなく、(256色の)カラーパレットに基づいているため、小さくなります。

于 2010-04-21T21:34:15.453 に答える
9

PNG 形式は、1 ピクセルあたり 24 ビットまたは 1 ピクセルあたり 8 ビットのイメージを提供できます。JPG は 24 ビット形式ですが、非可逆圧縮を使用してファイル サイズを大幅に縮小します。PNG と GIF は両方とも可逆圧縮を使用しますが、GIF は 8 ビットでしか機能しないため、画像は 256 色以下である必要があります。これにより、画像が粗くなることがよくあります。

PNG 出力のビット数を減らすには、ImageMagick の オプション-colorsとオプションを試してください。-ditherその時点で、GIF ファイルのサイズに匹敵するはずです。さらに削減する必要がある場合は、PNG を最適化するユーティリティがあります。

于 2010-04-21T22:01:20.720 に答える
5

.jpegファイル形式は不可逆形式であり、情報を破棄します。これにより、圧縮率が向上します。.gifファイル形式は不可逆ではありませんが、他の情報を失います。256色のみをサポートします。.pngファイル形式は不可逆ではなく、色の範囲を保持します。

于 2010-04-21T21:36:01.703 に答える
2

返信先:ハッキングが何をしているのか誰か知っていますか?私は何か間違ったことをしていますか?

ええ、私はこれを研究しています、あなたは何も悪いことをしていません、あなたは8ビット/カラーRGB PNGを生成しました私は8ビット/を生成するpngnq(http://pngnq.sourceforge.net/)でpngをreduceまたはcompressで解決しますカラーカラーマップPNG。

pngnqは、pngquantなどの他のフォークであり、通常はLinuxディストリビューションのメインストリームにあるため、私にとって最も改善されたプロジェクトのようです。

convert photo.jpg png:- | pngnq -s 1 > photo.png 

最後の賛成者(2016年)の場合:pngquantを優先して廃止されたpngnq(https://github.com/pornel/pngquant

于 2012-12-30T23:56:05.450 に答える
2

画像の種類によります。JPEG の非可逆圧縮は、色のグラデーションが多い画像 (つまり写真) で非常にうまく機能します。

シャープなエッジで区切られた同じ色の領域で構成される画像で試してみてください (写真のデスクトップの背景を表示しない限り、スクリーンショットは適切です。また、Vista と Windows 7 の派手なウィンドウ境界線とタスク バーもこれを台無しにする傾向があります)。JPEG はこの種の処理が苦手で、PNG の方が圧縮率が高いことがわかります (おそらく GIF よりも優れています)。

于 2010-04-21T21:41:54.793 に答える