jpegtranのインストール方法と使い方【JPG画像最適化】

jpegtranはJPEG画像を最適化できるコマンドラインツールです。

jpegtranは”圧縮”ではなく”最適化”なので、容量を凄く減らせるわけではないですが画質が劣化することがないのが利点となっています。

また、容量の削減以外にも画像の回転や反転、切り抜きなども可能です。

この記事ではjpegtranのインストール方法と使い方を詳しく解説していきます。

jpegtranをインストール

使用したOS

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

インストール手順

jpegtranはlibjpegに内包されているので、まずはlibjpegをダウンロードします。

記事更新時点での最新バージョンは9cです。

wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz

コンパイラがインストールされていない場合は事前にインストールしてください。

yum install gcc

続いてlibjpegをインストールします。

tar xzvf jpegsrc.v9c.tar.gz
cd jpeg-9c
./configure
make
make install

コマンドを入力してバージョン情報が出力されればインストールは完了です。

[root@localhost jpeg-9c]# jpegtran -v
Independent JPEG Group's JPEGTRAN, version 9c  14-Jan-2018
Copyright (C) 2018, Thomas G. Lane, Guido Vollbeding

jpegtranの使い方

Exifなどのメタデータを削除する

jpegtran -copy none -outfile 出力ファイル名 ファイル名

実行結果

71.9KB→74.6KB

何故かサイズが大きくなってしまう場合があるようです。

コメントマーカーのみコピーする

jpegtran -copy comments -outfile 出力ファイル名 ファイル名

実行結果

71.9KB→74.6KB

全てのマーカーをコピーする

jpegtran -copy all -outfile 出力ファイル名 ファイル名

実行結果

71.9KB→74.6KB

プログレッシブ形式に変換する

jpegtran -progressive -outfile 出力ファイル名 ファイル名

ハフマンテーブルを最適化する

jpegtran -optimize -outfile 出力ファイル名 ファイル名

実行結果

71.9KB→73.3KB

デバックを出力する

jpegtran -verbose(または-debug) -outfile 出力ファイル名 ファイル名

実行結果

Start of Image
JFIF APP0 marker: version 1.01, density 300x300  1
Define Quantization Table 0  precision 0
Define Quantization Table 1  precision 0
Start Of Frame 0xc2: width=800, height=400, components=3
    Component 1: 1hx1v q=0
    Component 2: 1hx1v q=1
    Component 3: 1hx1v q=1
Define Huffman Table 0x00
Define Huffman Table 0x01
Start Of Scan: 3 components
    Component 1: dc=0 ac=0
    Component 2: dc=1 ac=0
    Component 3: dc=1 ac=0
  Ss=0, Se=0, Ah=0, Al=1
Define Huffman Table 0x10
Start Of Scan: 1 components
    Component 1: dc=0 ac=0
  Ss=1, Se=5, Ah=0, Al=2
Define Huffman Table 0x11
Start Of Scan: 1 components
    Component 3: dc=0 ac=1
  Ss=1, Se=63, Ah=0, Al=1
Define Huffman Table 0x11
Start Of Scan: 1 components
    Component 2: dc=0 ac=1
  Ss=1, Se=63, Ah=0, Al=1
Define Huffman Table 0x10
Start Of Scan: 1 components
    Component 1: dc=0 ac=0
  Ss=6, Se=63, Ah=0, Al=2
Define Huffman Table 0x10
Start Of Scan: 1 components
    Component 1: dc=0 ac=0
  Ss=1, Se=63, Ah=2, Al=1
Start Of Scan: 3 components
    Component 1: dc=0 ac=0
    Component 2: dc=0 ac=0
    Component 3: dc=0 ac=0
  Ss=0, Se=0, Ah=1, Al=0
Define Huffman Table 0x11
Start Of Scan: 1 components
    Component 3: dc=0 ac=1
  Ss=1, Se=63, Ah=1, Al=0
Define Huffman Table 0x11
Start Of Scan: 1 components
    Component 2: dc=0 ac=1
  Ss=1, Se=63, Ah=1, Al=0
Define Huffman Table 0x10
Start Of Scan: 1 components
    Component 1: dc=0 ac=0
  Ss=1, Se=63, Ah=1, Al=0
End Of Image

画像を切り取る

jpegtran -crop 横幅x縦幅+X軸+Y軸 -outfile 出力ファイル名 ファイル名

実行結果

jpegtran -crop 100x300+700+50 -outfile 出力ファイル名 ファイル名

この場合、左上から700ドット、上から50ドットの位置から100px×300pxを切り取ります。

左右反転

jpegtran -flip horizontal -outfile 出力ファイル名 ファイル名

実行結果

上下反転

jpegtran -flip vertical -outfile 出力ファイル名 ファイル名

実行結果

画像をグレースケール化する

jpegtran -grayscale -outfile 出力ファイル名 ファイル名

実行結果

変形不可能であればエラーにする

jpegtran -perfect -outfile 出力ファイル名 ファイル名

画像を時計回りに回転する

jpegtran -rotate [90|180|270] -outfile 出力ファイル名 ファイル名

実行結果

指定比率で画像を縮小する

jpegtran -scale M/N -outfile 出力ファイル名 ファイル名

(このコマンドに関しては上手くいかず謎です…分かる方いたら教えてください)

対角線(左上から右下)に転置

jpegtran -transpose -outfile 出力ファイル名 ファイル名

実行結果

対角線(右上から左下)に転置

jpegtran -transverse -outfile 出力ファイル名 ファイル名

実行結果

変形不可能な部分を切り取る

jpegtran -trim -outfile 出力ファイル名 ファイル名

指定位置をグレーアウトする

jpegtran -wipe 横幅x縦幅+X軸+Y軸 -outfile 出力ファイル名 ファイル名

実行結果

jpegtran -wipe 100x300+700+50 -outfile 出力ファイル名 ファイル名

この場合、左上から700ドット、上から50ドットの位置から100px×300pxをグレーアウトします。

算術符号で最適化する

jpegtran -arithmetic -outfile 出力ファイル名 ファイル名

実行結果

71.9KB→68.4KB

リスタートインターバルを設定する

jpegtran -restart N -outfile 出力ファイル名 ファイル名

Nは行単位、Nの後ろにBを付けるとブロック単位でリスタートインターバルを処理します。

使用できる最大メモリを設定する

jpegtran -maxmemory メモリ数 -outfile 出力ファイル名 ファイル名

スキャンスクリプトを使う

jpegtran -scans スクリプトファイル名 -outfile 出力ファイル名 ファイル名

(謎コマンド。分かる人いたら教えてください)

さいごに

以上がjpegtranのインストール方法と使い方になります。

使ってみて感じたことはシンプルだがCUIに慣れている必要があることと、必ずしも最適化で容量が減るわけではないことを理解している必要があることでしょうか。

インストールが簡単ということもあり気軽に試せるので興味がある人はぜひ使ってみてください。

使用法が不明なコマンドについては判明次第更新したいと思います。

コメント

タイトルとURLをコピーしました