2012-02-17 15 views
6

通常、画像が私のサイトに来るとき、私は80%のデフォルトの品質で書いた画像ライブラリを使ってjpgとして保存します。今、私はそれをトリミングするか、サイズを変更するなど、他の操作を行う必要があるときに、イメージはjpgとして開かれ、処理されて元に戻されます。しかし、圧縮する前に再度圧縮したくない場合や、操作を行うたびに品質が低下します。JPG圧縮率を検出しますか?

標準のGD PHPライブラリのツールを使用する前に、画像がすでに圧縮されているかどうかを(私が推測しているpngのバージョンと比較して)どのくらい検出できますか?私は画像がPhotoshopであった場所を検出するツールが圧縮の相対量を比較することによってそうすることを知っているので、圧縮の量を検出することは可能だと思いますが、どのようにしてこの計算を行うのか誰にも分かりますか?ありがとう。

+0

jpgファイルから高品質レートを得ることはできません –

+1

ファイル自体のメタデータには保存されていませんが、それを計算する方法があるかもしれません。 – hackartist

+0

いいえ.. –

答えて

8

JPGから品質値を取得することはできません。さらに、品質値はエンコーダ依存である。これは標準でも、このようなものでもありません。いくつかのプログラムは、(低、中、高)のみで、20のほうが90より良いかもしれません。

第2に、毎回最高の品質で保存しても、各余弦エンコーディングで品質が低下します。悲しい生活の真実:品質を悪化させない唯一の操作は、反転や回転(およびJPEGブロックサイズに合わせている場合は作物)です。

親指の規則:毎回同じ品質値でをエンコードします。例:60と言うときに一度保存すると、次回に80に保存するとゲインはありません。ファイルサイズが大きすぎます。

また、十分な記憶容量があれば、そのような再エンコードの数を減らし、オリジナルの各操作を実行してください。

+0

更新された回答。 –

1

イメージがすでに圧縮されているかどうかを知るために、イメージの品質をデータベースに保存する必要があります。

+0

画像をリサイズしても、画質は落ちます。それを保存することは無意味です。 しかし、良い考え、したがって+1があります。 –

+0

@RokKralj彼は2回以上圧縮しないように保存することをお勧めします。彼はさらに画像を劣化させる可能性があります。 – ppp

+0

あなたはすべてを理解していません。 「圧縮」はありません。単に品質値を保存するだけです。彼が80度に1度それを救うということを意味するならば、それを覚えているので、彼は次回に100でそれを保存することができます...?これは、品質の向上がなくてもファイルサイズを増やすだけです。 80 - > 80 - > 80が正しい保存です。 –

1

イメージを複数回圧縮しないようにするには、サイズ変更のファイルサイズと元のサイズを単純に比較します。

  • ファイルサイズが著しく大きい場合は、レートを増やしたため、使用しないでください。
  • 圧縮されているよりも大幅に低い場合は、それを使用してください。

また、同じレートのファイルを再圧縮すると、ファイルサイズのわずかな量しか削られないため、レート(60%、70%、80%など)に丸数字を使用すると、サイズ変更のファイルサイズが元のサイズに非常に近い場合のレート。 90% = 2,115 KBから
:で1,844 KBファイルを圧縮する例えば

、。サイズが大きくなったので、私はそれを使用しません。
-80% = 1,843 KB。これは元のファイルサイズとほとんど同じですので、元のファイルのサイズは80%と仮定しています。
-70% = 1,567 KB。これは圧縮されているので、私はそれを使用します。

最後に、自分で圧縮した画像の割合のみに関心がある場合は、PHPを使用してファイルのメタデータで使用するレートを保存できます。

関連する問題