なりせなるてず

技術ブログにしたい

FuelPHPで画像圧縮と圧縮率

webページの表示速度を上げるうえで必ずネックになる画像。
圧縮するとどのくらい変わるものなのか調査してみました。

FuelPHPで画像圧縮

いつもどおりFuelPHPです

$filepath = 'image.jpg';
Image::forge(array('quality' => 90))->load($filepath)->output();

Image::forgeメソッドに配列でqualityキーと値を渡します。
qualityが90%になるように?圧縮してくれます。

圧縮率

元画像が307KBでした。
クオリティ90%で110KB
80%で75KB
70%で60KB
60%で51KB
50%で45KB
40%で39KB
30%で33KB
20%で25KB
10%で17KB

と、なりました。
90%の時点で約3分の1にまで小さくなるでの非常に有効ですね。

勿論画像自体も汚くなるのですが、僕の見た限りでは70%くらいまでは余裕で使えるなーという感じでした。
参考画像を上げれなくて申し訳ないです。

圧縮の不思議

JPGは圧縮すると素直に容量も小さくなったのですが、PNGは圧縮すると逆に容量が大きくなりました。
またGIFはほぼ変わりませんでした。

GDのせいなのか、はたまたPNG,GIFアルゴリズムのせいなのかは分かりません。
webで使われてるのは圧倒的にJPGが多いので、JPGだけ圧縮するようにして対応してます。