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

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

カテゴリ: 未分類

タグ: 無し

投稿者: しみほ

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

やり方

[code lang=text]
wget https://github.com/mozilla/mozjpeg/releases/download/v3.2/mozjpeg-3.2-release-source.tar.gz
[/code]

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

[code lang=text]
tar xf mozjpeg-3.2-release-source.tar.gz
[/code]

解凍します

[code lang=text]
cd mozjpeg
[/code]

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

[code lang=text]
sudo yum install -y nasm libjpeg-turbo
[/code]

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

[code lang=text]
./configure
make
sudo make install
[/code]

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

[code lang=text]
sudo mkdir /tmp/libjpeg
sudo cp /usr/lib64/*jpeg* /tmp/libjpeg/
[/code]

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

[code lang=text]
sudo mv /opt/mozjpeg/lib64/*jpeg* /usr/lib64/
[/code]

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

動作確認

これで

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

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

php-fpmの場合

[code lang=text]
sudo service php-fpm reload
[/code]

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

検証

元画像(3.4MB)

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

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

感想

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