PHPを自前ビルドしないでmozjpegを使ってみた

投稿者: しみほ (2017/11/29)

カテゴリ: 未分類

タグ: 無し

投稿者: しみほ

PHPでJPEG圧縮する際に、標準ライブラリを使用していると思います。
今回はそれをPHPのmakeを行わずに、mozjpegに置き換えてみようと思います。

やり方

wget https://github.com/mozilla/mozjpeg/releases/download/v3.2/mozjpeg-3.2-release-source.tar.gz

まずソースを落としてきます

tar xf mozjpeg-3.2-release-source.tar.gz

解凍します

cd mozjpeg

カレントディレクトリを変更します

sudo yum install -y nasm libjpeg-turbo

ビルドに必要なライブラリを入れます(libjpeg-turboはいらないと思うけど一応)

./configure
make
sudo make install

インストールします。
/opt/mozjpegにインストールされます

sudo mkdir /tmp/libjpeg
sudo cp /usr/lib64/*jpeg* /tmp/libjpeg/

で念のため既存ライブラリのバックアップ取ります。

sudo mv /opt/mozjpeg/lib64/*jpeg* /usr/lib64/

作成したライブラリを移動します。

動作確認

これで

<?php
$files = array("ファイル名");
foreach($files as $file) {
        $img = imagecreatefromjpeg($file);
        imagejpeg($img, $file. "_80.jpg", 80);
}
?>

を実行しても大丈夫であれば完了です。

php-fpmの場合

sudo service php-fpm reload

を実行するだけで反映されます。

検証

元画像(3.4MB)

標準ライブラリ圧縮/圧縮率80(1.5MB)

mozjpeg圧縮/圧縮率80(941.6KB)

感想

ライブラリの置き換えが意外と楽ちんで良かったです。
検証するのがめんどくさかったです…