画像処理ライブラリMozJPEGをLinux Mintでビルドして使う

Linux

MozJPEGは、Mozilla社が開発しているオープンソースの libjpeg 及び libjpeg-turbo 互換のJPEG画像処理ライブラリです。他のJPEGエンコーダーより圧縮率が高く画像の軽量化に役立つので、ブログやネット上にJPEG画像を頻繁にアップロードする方は入れておいて損はないと思います。

しかし MozJPEGはJPEG形式の圧縮と展開に特化しており、画像のリサイズなどはできないので注意が必要です。

MozJPEGを使用するにはソースコードから自分でビルドする必要があるので、今回の記事はそのビルド手順と端末での使い方についての備忘録です。なおビルド及び実行環境は Linux Mint 22.1 “Xia” MATE Edition です。

下準備

パッケージリストの更新

キーボードの [Ctrl] + [Alt] + [T] を押して端末を開き、以下のコマンドを実行します。

$ sudo apt update

事前に必要なものをインストール

PNG形式の画像にも対応したい場合は libpng-dev をインストールします。

$ sudo apt -y install cmake nasm yasm make libpng-dev

MozJPEGのビルド

ソースコードをダウンロードし解凍

GitHubよりMozJPEGのソースコードをダウンロードし解凍します。2025年07月現在、最新版は v4.1.1 となっております。

$ wget https://github.com/mozilla/mozjpeg/archive/refs/tags/v4.1.1.tar.gz
$ tar -zxvf v4.1.1.tar.gz

MozJPEGのビルドとインストール

$ cd mozjpeg-4.1.1
$ mkdir build_mozjpeg && cd build_mozjpeg

$ cmake -G"Unix Makefiles" ../
$ make -j12
$ sudo make install

シンボリックリンクを張る

/opt/mozjpeg/bin にはパスが通っていないので、パスが通っている /usr/local/bin にシンボリックリンクを張ります。

注意点として、Linux Mint では標準で cjpeg / djpeg / jpegtran といったコマンドが存在し、これらは libjpeg-turbo ライブラリによって実装されています。

MozJPEG は Mozilla社が libjpeg-turbo を基に開発したもので、コマンド名も libjpeg-turbo と同じcjpeg / djpeg / jpegtran となっており、名前が被ってしまっています。

そこでここでは cjpeg → mozjpeg / djpeg → mozdjpeg / jpegtran → mozjpegtran といった具合に名前の先頭に moz をつけることで libjpeg-turbo のコマンド名と MozJPEG のコマンド名を区別しています。

### 1行で済ませたい場合 ###
$ cd /opt/mozjpeg/bin && for x in *; do sudo ln -s /opt/mozjpeg/bin/$x /usr/local/bin/moz$x; done && cd


### 以下のように一つ一つシンボリックリンクを張っても構いません ###
$ sudo ln -s /opt/mozjpeg/bin/cjpeg /usr/local/bin/mozcjpeg
$ sudo ln -s /opt/mozjpeg/bin/djpeg /usr/local/bin/mozdjpeg
$ sudo ln -s /opt/mozjpeg/bin/jpegtran /usr/local/bin/mozjpegtran

なお、先程張ったシンボリックリンクを削除したい場合は、以下のコマンドを実行してください。

$ cd /usr/local/bin && for x in moz*; do sudo unlink /usr/local/bin/$x; done && cd

リンクが張れているか確認

シンボリックリンクがちゃんと張られていて実行できるか確認します。

$ mozcjpeg -version

上記の画像のように、MozJPEGのバージョンとビルドした日付が表示されればOKです。

不要になったtar.gzを削除

最後に不要になったファイルを削除します。

$ rm ~/v4.1.1.tar.gz

MozJPEGの基本的な使い方

mozcjpeg

画像をJPEG形式に不可逆圧縮 (Lossy Compression) します。-qualityは画像の品質を指定するオプションで 0~100 の範囲で指定でき、数字が小さいほど低品質、大きいほど高品質になります(デフォルトでは 75 指定)。

### input.png を 70 の画像品質で output.jpg に変換 ###
$ mozcjpeg -quality 85 -optimize input.png > output.jpg
### Picturesディレクトリにある全てのPNG画像を 70 の画像品質でJPEG形式に変換 ###
$ for x in $(find ~/Pictures -name "*.png" | cut -f 1 -d "."); do mozcjpeg -quality 70 -optimize ${x}.png > ${x}.jpg; done

mozjpegtran

画像をJPEG形式に可逆圧縮 (Lossless Compression)したり、画像のメタデータを削除したりします。

### input.jpgのメタデータを全て削除して、output.jpg として出力 ###
$ mozjpegtran -copy none -optimize input.jpg > output.jpg

### カレントディレクトリにある全てのJPEG形式画像のメタデータを削除 ###
$ for x in $(find ~/Desktop -name "*.jpg"); do mozjpegtran -copy none -optimize ${x} > ${x}; done

また、以下のように複数のコマンドと組み合わせて使うこともできます。

### input.png を 60の品質でJPEG形式に圧縮した後、メタデータを削除して output.jpg として出力 ###
$ mozcjpeg -quality 60 -optimize input.png | mozjpegtran -copy none > output.jpg


### Picturesディレクトリにある全てのPNG画像を 60の品質でJPEG形式に圧縮した後、メタデータを削除して出力 ###
$ for x in $(find ~/Pictures -name "*.png" | cut -f 1 -d "."); do mozcjpeg -quality 60 -optimize ${x}.png | mozjpegtran -copy none > ${x}.jpg; done

mozdjpeg

JPEG形式の画像をBMPやGIFといった画像形式にデコードします。

### input.jpg を output.gif にデコード ###
$ mozdjpeg -gif input.jpg > output.gif

### input.bmp を output.bmp にデコード ###
$ mozdjpeg -bmp input.jpg > output.bmp

### Picturesディレクトリにある全てのJPEG画像をBMP画像にデコード ###
$ for x in $(find ~/Pictures -name "*.jpg" | cut -f 1 -d "."); do mozdjpeg -bmp ${x}.jpg > ${x}.bmp; done

シェルスクリプトに処理を記述して、画像を一括処理したりすると便利だと思います。

参考にさせていただいたサイト様

mozjpeg ビルド手順 on linux (新旧) - Qiita
何番煎じかも分かりませんが、新しい方法と前の方法とでビルド方法が違うことに気付いたので執筆。 mozjpeg について mozjpeg は、mozilla によって開発されている JPEG エンコーダです。圧縮効率が良いことで知られています...
How to install MozJPEG on macOS and Ubuntu
MozJPEGとコマンドラインツール
前回に引き続き、MozJPEGについてです 今回はコマンドラインツールの使い方や個人的に使っていて気になったこ…
画像処理コマンド 逆引きメモ | Refills
Independent JPEG Group's JPEG software の使い方 (usage.doc)

公式GitHub

mozjpeg/BUILDING.md at master · mozilla/mozjpeg
Improved JPEG encoder. Contribute to mozilla/mozjpeg development by creating an account on GitHub.

コメント