2016-04-14 25 views
0

私は現在開発中のウェブサイトのスピードアップを図っています。私が今作業している部分は、画像を最適化して品質を損なうことなく、できるだけ小さい(ファイルサイズではなく、寸法ではない)ように画像を最適化することです。PHPだけで圧縮されていない画像のみを圧縮するにはどうすればいいですか?

お客様はカスタムCMSを通じて自分のイメージをWebサイトにアップロードできますが、イメージは圧縮または最適化されていません。私の上司は、顧客が自分の画像をアップロードすることができ、Photoshopやそのようなツールを使用してこれらの画像を事前に最適化することができるからだと説明しました。既に最適化されたイメージを最適化すると、品質が悪化します。 ...右?

私たちは、モジュールなどをインストールする必要のないソリューションを探しています。すでにimagejpeg()imagepng()、およびimagegif()を使用していますが、前述の理由から$qualityパラメータは使用していません。私はいくつかのスニペットを見てきましたが、それらはすべてimagejpg()などを使用しています。

言われているように、以前に最適化された画像を最適化するリスクなしに画像を最適化する確実な方法がありますか?あるいは、すでに最適化された画像を最適化することを意味する場合でも、imagejpeg()imagepng()imagegif()を使用することは全く問題になりませんか?

ありがとうございました!あなたのタイトルから行く

+0

最適化を定義すると、それはどういう意味ですか?圧縮?次元?カラーパレット?インターレース? – Tschallacka

+0

私は圧縮を意味します。私が「最適化する」と言及するとき、私たちのウェブサイトがピクセル化されていないか、あいまいではない画像に依存するのを見て、品質を損なうことなくできるだけファイルを小さくすることを意味します。私は自分の質問を編集し、あなたの答えを見ていきます。ありがとう! – Sean

+0

アップロードプロセスに最適化ステップを追加し、画像が保存された時点ですべての受信画像に適用します。ファイルのサイズが既にアップロードした人が最適化したために設定した基準を下回っている場合は、再度処理することに害はありません。 –

答えて

1

が、私はそう圧縮

を前提とするつもりです、800×600の通常のJPGは、あなたの顧客がアップロードされると言うことができます。 お客様のjpgは272kbです。詳細とすべてが含まれているためです。

ファイルサイズのしきい値を許容範囲内に設定する必要があります。

同様:

if $dimensions->equals(800,600) and file_type($image) =='jpg' and file_size($image) > 68kb 
then schedule_for_compression($image) 

し、ファイルサイズの上限として許容可能である何のためのパラメータを設定している方法です。ディメンションが一致し、ファイルサイズが大きければ、最適化されません。

しかし、最適化について正確に理解されていることをさらに詳しく知ることなく、これが私が考えることができる唯一のものです。

+1

はい、私は圧縮を意味しました、私はファイルのサイズをできるだけ低くして品質を落とさないようにします。あなたの方法は実際に正確に私の質問に答える、私は次元にファイルサイズを比較することは考えていない。私はちょうど私が正しい次元とファイルサイズを選ぶことを願っています。私はそれが試行錯誤のプロセスであると考えています。迅速な返信をありがとう! – Sean

+0

混在した品質、色の濃さ、サイズのウィキメディア/ランダムイメージをたくさん入手し、キューに入れます。圧縮が容認できないほど増加したときに適用する圧縮の段階があります。次に、ファイルサイズ+ファイルタイプ+ディメンションを保存します。このための迅速なUIを作成することで、標準の作成を迅速に自動化し、その上にインターンまたは安価な労働を入れて、hteボタンをクリックして構築することができます – Tschallacka

+0

特定の量のイメージの後に、dimensons x filesize基本的な数学を使って、可能な限りすべての値を予測して、最大限に値を計算してください。 – Tschallacka

2

"すでに最適化された画像を最適化すると、画質が悪化する可能性があります。" 緩みのない方法を使用している場合は、いいえ。

私はPHPの直接の方法はわかりませんが、Linuxサーバーを使用している場合は、jpegとOptiPNGの場合はjpegtranまたはjpegoptim(--strip-allを使用)、pngの場合はPNGOUTを使用できます。

+0

これはプラグインまたはモジュールが必要な印象を受けましたが、これはLinuxサーバーにとってネイティブなものですか? – Sean

+0

私は@ michael-dibbetsの回答に同意しましたが、この回答は画像のファイルサイズをさらに小さくして品質を低下させるはずです。 – Sean

0

圧縮するのに必要な画像の数が少ない場合は、https://tinypng.com/developersなどの外部サービスがあります。

私は、JPGファイルとPNGファイルの両方で手動でファイルサイズを縮小するためにオンラインツールを使用しましたが、最初の500枚の画像を無料APIサービスとして提供しています。

謝罪これは答えよりもコメントとしては良いと思うが、私はかなりstackoverflowには新しく、まだ十分なポイントがないが、これは便利な代替ソリューションかもしれないと感じている。

0

JPEGを同じまたはより高品質の設定で保存しても、品質が著しく低下することはありません。希望の品質設定で再保存してください。ファイルが大きくなったら、破棄して元のままにしてください。最適化する前にjpegranまたはjpegoptimを使用してメタデータを削除して、元のファイルと比較してファイルサイズに影響を与えないようにします。

PNGとGIFは色の数を減らさない限り品質を失いません。 Gyncocaが言及したオプティマイザの1つを使用してください。

関連する問題