83

これらがどのように機能するかまだ完全には理解していないため、これは実際には 2 つの部分からなる質問です。

私の状況: ユーザーが画像をアップロードできる Web アプリを作成しています。次に、アプリのサイズを表示可能なもの (例: 640x480 っぽい) に変更し、後で使用するためにファイルを保存します。

私の質問:

  1. 任意の JPEG ファイルが与えられた場合、サイズ変更された画像を保存するときに同じ品質を使用できるように、品質レベルを知ることはできますか?
  2. これも関係ありますか?? 元の品質に関係なく、すべての画像を適切なレベル (例: 75-80) で保存する必要がありますか?

私が理解しているように、(極端な例を見てみましょう)、誰かが 5 メガピクセルの画像を品質 0 で保存した場合、それはとにかくブロック状になるため、これについてはよくわかりません。画像サイズを 640x480 に縮小すると、ブロックが滑らかになり、ほとんど目立たなくなります...再び品質 0 で保存するまで...

スペクトルの反対側では、q=0 で 800x600 の画像があった場合、640x480 にサイズ変更しても、まったくがらくたのように見えるという事実は変わらないため、q=80 で保存するのは冗長です。

私も近いですか?

それが役に立ったら、PHPでGD2ライブラリを使用しています

4

12 に答える 12

134

identifyImageMagickのツールを使用して、圧縮レベルを表示できます。ダウンロードとインストールの手順については、公式 Web サイトを参照してください。

インストールしたら、コマンド ラインから次のコマンドを実行します。

identify -format '%Q' yourimage.jpg

これは、0 (低品質、ファイルサイズが小さい) から 100 (高品質、ファイルサイズが大きい) までの値を返します。

情報源

于 2013-08-22T10:35:14.510 に答える
27
  1. JPEG は非可逆形式です。品質レベルに関係なく、同じ画像を JPEG で保存するたびに、実際の画像品質が低下します。したがって、ファイルから品質レベルを取得したとしても、JPEG を再度保存するときに同じ品質を維持することはできません (品質 = 100 であっても)。

  2. JPEG は、ファイル サイズが許す限り、できるだけ高い品質で保存する必要があります。または、PNG などの無損失形式を使用します。

低品質の JPEG ファイルは、単純にブロック状になるわけではありません。代わりに、色深度が減少し、画像のセクションの詳細が削除されます。低品質の画像がむらがあり、小さいサイズでも問題なく見えることに頼ることはできません。

JFIF仕様によると。水平および垂直のピクセル密度は保存されますが、品質番号 (0 ~ 100) は画像ヘッダーに保存されません。

于 2010-01-08T01:57:44.297 に答える
10

JPEG 圧縮アルゴリズムには、結果の画像の品質に影響を与えるパラメータがいくつかあります。

そのようなパラメータの 1 つは、各係数で使用されるビット数を定義する量子化テーブルです。プログラムが異なれば、異なる量子化テーブルが使用されます。

一部のプログラムでは、ユーザーが品質レベルを 0 ~ 100 に設定できます。しかし、この数の一般的な定義はありません。60% の品質の Photoshop で作成された画像は 46 KB かかりますが、GIMP で作成された画像は 26 KB しかかかりません。

量子化テーブルも異なります。

サブサンプリング、dct メソッドなどの他のパラメーターがあります。

したがって、単一の品質レベル番号ですべてを説明することはできず、単一の番号で jpeg 画像の品質を比較することはできません。ただし、Photoshop や gimp のように、サイズと品質の妥協点を説明するような数値を作成することはできます。

詳細: http://patrakov.blogspot.com/2008/12/jpeg-quality-is-meaningless-number.html

一般的な方法は、画像を適切なサイズにリサイズしてから jpeg を適用することです。この場合、巨大な画像と中間の画像は同じサイズと品質になります。

于 2010-01-11T17:38:53.373 に答える
3

したがって、基本的に気になる 2 つのケースがあります。

  1. 入力画像の品質設定が高すぎると、不適切な量のスペースが必要になる場合があります。したがって、たとえば、着信 q=99 を q=85 に減らしたい場合があります。

  2. 入力画像の品質設定が低すぎる場合、品質を上げるのはスペースの無駄になる可能性があります。ただし、大量のデータが破棄された画像は、品質を上げても魔法のように多くのスペースを占有することはありません。ブロック状の画像は、高品質の設定でも非常にうまく圧縮されます。したがって、私の意見では、着信 q=1 を q=85 に上げてもまったく問題ありません。

このことから、まともな品質設定を強制することは、完全に受け入れられることだと思います。

于 2010-01-11T18:39:50.927 に答える
2

最初に作成したのと同じソフトウェアを使用して、同じ設定を使用してJPEGを再保存すると、損傷が最小限に抑えられることがわかります。アルゴリズムは、最初にスローしたのと同じ情報をスローする傾向があります。ファイルを見ただけで、どのレベルが選択されたかを知る方法はないと思います。たとえ可能であったとしても、ソフトウェアが異なれば、パラメーターと丸めも異なることがほぼ保証され、一致はほとんど不可能になります。

于 2010-01-08T02:09:56.893 に答える
2

これはばかげた質問かもしれませんが、ドキュメントの品質を細かく管理することについてなぜ心配するのでしょうか? ImageMagick を使用して変換を行うと、最高の効果が得られるように JPEG の品質が管理されると思います。http://www.php.net/manual/en/intro.imagick.php

于 2010-01-11T18:32:07.640 に答える
2

ファイルを新しく保存するたびに、全体的な品質がさらに低下します。より高い品質値を使用すると、より多くの画像が保持されます。元の画質に関係なく。

于 2010-01-08T01:56:29.417 に答える