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に慣れている必要があることと、必ずしも最適化で容量が減るわけではないことを理解している必要があることでしょうか。
インストールが簡単ということもあり気軽に試せるので興味がある人はぜひ使ってみてください。
使用法が不明なコマンドについては判明次第更新したいと思います。
コメント