[PHP-users 33616] Re: jpgの圧縮率について

goungoun gounx2 @ gmail.com
2008年 6月 11日 (水) 11:12:43 JST


こんにちは。

On Wed, 11 Jun 2008 02:08:49 +0900
"AYUKAWA" <yjtyj064 @ ybb.ne.jp> wrote:
:
> 但し品質は何らかのかたちで保存されているように思います。

[PHP-users 33609] でjpegのフォーマットに関して返信が入っています。
jpeg上には、圧縮率ずばりそのものは格納されてません。

> 例えばjpeg画像をPHOTOSHOPなどのレタッチツールで開いた場合、
> 保存された時の品質なり圧縮率が表示されます。

Photoshopなどのツールは何らかの計算をして表示してるのでしょう。

> 
> phpでは取得できないような情報かもしれませんが。。。。
> 
> 
> > そもそも、なぜ品質を取得しようと考えられたのでしょうか?
> 
> 品質が高すぎる画像はウェブの転送容量を圧迫します。
> 実際品質100の画像が1M位あった場合、品質80まで修正することで
> 0.1~0.2Mまでファイルサイズを落とせるからです。
> 
> このタイミングを画像にアクセスしたときに自動変換したいのですが、
> アクセスするたび変換していては時間もかかるし、
> 品質が80になっている画像にまで処理が及びたくないわけです。
> 
> 例えば品質が80以上ある場合のみ自動変換処理が行えれば、
> 基本的に一度のアクセス以降は処理が行われず快適です。
> 
> といった理由から品質が取得できればと思うのですが。。。

転送容量を気にするのであれば、jpgの圧縮率ではなく
純粋にファイルサイズで制限すべきかと。

# 転送容量の対策として、圧縮率で制限かける
# という手段だけでは、解決しないでしょう。
# 仮にjpgの圧縮率なるものを取得できたとしても、
# 「品質50で10Mというファイルはよしとするのか?」
# とか。

> 
> 
> 他の方法として画像のアップロード時に変換してしまうのが、
> 一番よかったりも考えましたが、
> すでに運用されている画像だけでも数万以上サーバーに蓄えられているので、
> この変換作業も大変だったりします。

むしろ、私には限定的ではありますが、
対策としては即効性があり有効な対策に見えます。

# phpスクリプトにはなんら変更を加えずとも
# (新規にアップロードされるものについての対策は
# 後回しにするとしても)
# 既存の画像ファイルを単に圧縮するだけで、
# 転送量を軽減できるのですから。

> 
> アクセスされた画像のみ変換されていくのが現状では理想です。
> 他にもいい方法がありますでしょうか。

画像の圧縮は結構な負荷になります。
それをアクセスされたとき(=表示のとき)に行うというのは、
私には理想的には思えません。

# 仮に1度変換したものは2度変換はないようキャッシュしておく
# 仕組みとしても、
# この仕組みを取り入れた直後は、なんらキャッシュが効いていない状態
# ですから、高負荷になるでしょう。
# アクセス数にもよるでしょうが、googleなどのクローラーが来たとき
# などを考えると、すごいことになりそうです。

私がやるとすれば、まず考えるのは
・アップロードで、ファイルサイズ制限
  (php.iniのupload_max_filesizeとか)
・既にアップロードされたものは、圧縮や削除する。
ですね。


---
あと、とても見づらいのでスレッドを切らないでください。
http://ml.php.gr.jp/pipermail/php-users/2008-June/thread.html


-- 
goungoun <gounx2 @ gmail.com>
http://goungoun.dip.jp/app/



PHP-users メーリングリストの案内