JPEGのロスレス圧縮やファイルサイズを指定して圧縮可能なJpegoptimをUbuntuで使う方法
はじめに
JPEGファイルのロスレス圧縮やファイルサイズを指定して圧縮できるコマンドラインツールであるJpegoptimをUbuntuにインストールする手順と簡単な使い方をまとめます。
Jpegoptimについて
Jpegoptimは、JPEGファイルのロスレス圧縮やロスありの通常の圧縮を行うツールです。コマンドラインツールであり、色々なオプションが用意されています。詳しくは後述します。
Ubuntuではapt
コマンドから簡単にインストールできます。以下が公式リポジトリです。
前提と環境
この記事ではUbuntuにてJpegoptimを使用しましたが、JpegoptimはDebian、Ubuntu、Mac OS Xに対応しています。
- OS : Ubuntu18.04
Jpegoptimをインストールする
apt
経由でインストール可能です。まずupdate
してインストールします。
$ sudo apt update
$ sudo apt install jpegoptim
以下のようにヘルプが表示されれば無事にインストールが完了していることを確認できます。
$ jpegoptim --help
jpegoptim v1.4.4 Copyright (c) 1996-2016, Timo Kokkonen
Usage: jpegoptim [options] <filenames>
-d<path>, --dest=<path>
specify alternative destination directory for
optimized files (default is to overwrite originals)
-f, --force force optimization
-h, --help display this help and exit
-m<quality>, --max=<quality>
set maximum image quality factor (disables lossless
optimization mode, which is by default on)
Valid quality values: 0 - 100
-n, --noaction don't really optimize files, just print results
-S<size>, --size=<size>
Try to optimize file to given size (disables lossless
optimization mode). Target size is specified either in
kilo bytes (1 - n) or as percentage (1% - 99%)
-T<threshold>, --threshold=<threshold>
keep old file if the gain is below a threshold (%)
-b, --csv print progress info in CSV format
-o, --overwrite overwrite target file even if it exists (meaningful
only when used with -d, --dest option)
-p, --preserve preserve file timestamps
-P, --preserve-perms
preserve original file permissions by overwriting it
-q, --quiet quiet mode
-t, --totals print totals after processing all files
-v, --verbose enable verbose mode (positively chatty)
-V, --version print program version
-s, --strip-all strip all markers from output file
--strip-none do not strip any markers
--strip-com strip Comment markers from output file
--strip-exif strip Exif markers from output file
--strip-iptc strip IPTC/Photoshop (APP13) markers from output file
--strip-icc strip ICC profile markers from output file
--strip-xmp strip XMP markers markers from output file
--all-normal force all output files to be non-progressive
--all-progressive force all output files to be progressive
--stdout send output to standard output (instead of a file)
--stdin read input from standard input (instead of a file)
Jpegoptimを使ってロスレス圧縮を行う
以下のようにjpegoptim
コマンドに圧縮したいJPEGファイルを渡すことで圧縮してくれます。ただし、以下のコマンドではtest.jpg
は圧縮されて上書きされ、元のファイルは残りません。
$ jpegoptim test.jpg
test.jpg 6016x4016 24bit N ICC JFIF [OK] 7974779 --> 7862885 bytes (1.40%), optimized.
もし圧縮対象のJPEGファイルがこれ以上圧縮できない場合は、以下のように実行してもskipped
と表示されます。
$ jpegoptim test2.jpg
test2.jpg 4239x2593 24bit N ICC JFIF [OK] 3494179 --> 3494195 bytes (-0.00%), skipped.
どれぐらい圧縮できるかを事前に確認する
以下のように-n
オプションを使用することで、実際には圧縮せずにまずどれぐらい圧縮できるかを確認することができます。
$ jpegoptim -n test.jpg
test.jpg 6016x4016 24bit N ICC JFIF [OK] 7974779 --> 7862885 bytes (1.40%), optimized.
上記のように、1.40%
と圧縮できる%が表示されます。実際には圧縮はされておらず元のJPEGファイルはそのまま残っており何も新しく作成されません。
指定したディレクトリに圧縮したファイルを作成する
圧縮したファイルを元のファイルに上書きするのではなく指定したディレクトリに作成したい場合は、-d
オプションを使用します。
$ jpegoptim -d ./mydir test.jpg
jpegoptim: skipping directory: ./mydir
test.jpg 6016x4016 24bit N ICC JFIF [OK] 7974779 --> 7862885 bytes (1.40%), optimized.
上記の場合は、./mydir
ディレクトリに圧縮したJPEGファイルを元のJPEGファイルと同じファイル名で作成します。
Jpegoptimを使ってロスあり圧縮を行う
ロスあり圧縮ももちろん可能で、フィルサイズを指定もしくは元ファイルサイズのパーセンテージを指定して圧縮できます。
以下のように--size
オプションの後に具体的なファイルサイズをキロバイトで指定して圧縮可能です。
$ jpegoptim --size=1000k small.jpg
small.jpg 6016x4016 24bit N ICC JFIF [OK] 7862885 --> 1048817 bytes (86.66%), optimized.
同じく--size
オプションにパーセント値を指定して圧縮可能です。パーセント値を50%とすれば、元ファイルサイズの50%のファイルサイズに圧縮します。
$ jpegoptim --size=50% small.jpg
small.jpg 4239x2593 24bit N ICC JFIF [OK] 3494179 --> 1740804 bytes (50.18%), optimized.
画質を落として圧縮する
ロスありの場合は、-m
オプションを使用して画質を落とすこともできます。
0〜100の値を-m
オプションにつけて使います。以下は値を10に設定しています。
$ jpegoptim -d ./mydir -o -m10 grape-sample.jpg
jpegoptim: skipping directory: ./mydir
grape-sample.jpg 2048x1536 24bit N ICC JFIF [OK] 418202 --> 69885 bytes (83.29%), optimized.
上記は-d
オプションも合わせて使用しています。ここの画質というのはどういうことかというと、以下のサンプルを見るのが早いと思うので例を載せます。クリックして拡大するとより違いが分かると思います。以下のぶどうの写真は、UnsplashにあったMarius Ciocirlanさんの写真を使用させて頂いています。ありがとうございます。
複数ファイルを一括処理する
複数ファイルを指定したり、後はJPEGの拡張子ファイルをまとめて一括して処理することもできます。以下のように単純に圧縮したいファイルを連続して指定すればOKです。
$ jpegoptim sample1.jpg sample2.jpg
sample1.jpg 6016x4016 24bit N ICC JFIF [OK] 7974779 --> 7862885 bytes (1.40%), optimized.
sample2.jpg 6016x4016 24bit N ICC JFIF [OK] 7974779 --> 7862885 bytes (1.40%), optimized.
複数ファイルを指定した場合でも他のオプションを一緒に使用できます。例えば以下は指定したディレクトリ先に圧縮したファイルを指定した分だけ作成します。
$ jpegoptim -d ./mydir sample1.jpg sample2.jpg
jpegoptim: skipping directory: ./mydir
sample1.jpg 6016x4016 24bit N ICC JFIF [OK] 7974779 --> 7862885 bytes (1.40%), optimized.
sample2.jpg 6016x4016 24bit N ICC JFIF [OK] 7974779 --> 7862885 bytes (1.40%), optimized.
また、以下のように指定すれば現在のディレクトリ直下にある全てのJPEGファイルを圧縮して上書きします。
$ jpegoptim *.jpg
圧縮時にJPEGファイルの情報を削除する
--strip-exif
.オプションを使用すると、JPEGファイルのEXIF情報を削除して圧縮します。
$ jpegoptim --strip-exif test.jpg
test.jpg 4032x3024 24bit N Exif JFIF [OK] 1891343 --> 1815935 bytes (3.99%), optimized.
EXIF情報以外にも、ICC(カラープロファイル)なども削除できます。もし全てのメタ情報を削除したい場合は、以下のように--strip-all
を使用します。
$ jpegoptim --strip-all test.jpg
まとめ
時々必要な作業をJpegoptimのようにさくっとコマンドで処理できるのは便利です。一括処理も可能ですし、もちろんシェルスクリプトで使用することも可能です。
関連記事
- 公開日:2020/02/16 更新日:2020/02/16
圧縮、暗号化、リモート対応の差分バックアップを作成できる「Borg Backup」の使い方
圧縮、暗号化に対応し差分バックアップを作成できるソフトウェアである「Borg Backup」をUbuntuにインストールして使ってみたのでその手順をまとめます。「Borg Backup」はLinux、macOSに対応しています。
- 公開日:2020/02/14 更新日:2020/02/14
自分専用の後で読むサービスを構築できる「Wallabag」をUbuntu + Nginxで構築する手順
後で読むサービスのPocketにかなり近く、機能豊富なオープンソースのWallabagをUbuntuにインストールしたのでその手順をまとめます。
- 公開日:2020/02/12 更新日:2020/02/12
ファイル単位で暗号化して保存できるCryptomatorをインストールして使う手順
Cryptomatorは、ファイル単位での暗号化が可能なソフトウェアです。この記事では、UbuntuにCryptomatorをインストールする手順と使い方をまとめます。
- 公開日:2020/02/10 更新日:2020/02/10
UbuntuをmacOSのCatalinaっぽい見た目にする
UbuntuのデスクトップをmacOSのCatalinaっぽくするためのカスタマイズ手順をまとめます。
- 公開日:2020/01/22 更新日:2020/01/22
WireGuardでVPNサーバーを構築してスマホやPCから接続する手順
WireGuardはOpenVPNよりもシンプルで高速、より安全なVPNとして開発が進められており、OpenVPNに代わるVPNとして期待されています。この記事ではWireGuardを使ってVPNサーバーを構築し、そのVPNサーバーにUbuntuやiPhoneから実際に接続してみるまでの手順をまとめます。