簡単なフレームワークを作る際に画像はお手軽に扱いたかたのでリサイズについて見てみた。
PHPでお手軽にリサイズするならGDとかでやればいいんだけど、リサイズ方法がいくつかあってよくあるのがimagecopyresampledとimagecopyresized。
リファレンスを見てみると
早いけど粗い(imagecopyresized)
綺麗だけど遅い(imagecopyresized)
という特徴がそれぞれあったのでどんくらい差があるものかと思って測ってみた。
http://www.php.net/manual/ja/function.imagecopyresampled.phphttp://www.php.net/manual/ja/function.imagecopyresized.phpまずgithubのoctcatのサイズを半分にして計測してみた。
元画像はこんな感じ
まずは50%に縮小した画像の結果
(実際の縮小コードはそれぞれサンプルとして表示してあったものをそのまま使用しました)
明らかにimagecopyresizedの方が画像にノイズが乗ってます。
輪郭部分がブロックノイズというかなんというか特有の荒れがでてます。
それに対してimagecopyresampledのほうはとても綺麗です。
ちなみに100回ほど処理をした平均処理時間は以下のとおり。
imagecopyresized :0.0191218852997
imagecopyresampled:0.0415740013123
倍程度の差が出ています。
時間かけてキレイにするか、とりあえず早く出すために荒くてもいいから表示するか
その時の状況によりますが倍の差があるとなると利用シーンはよく考えないといけないかもしれません。
PHP