# 導入ガイド - SmartJPEG をはじめよう

Updated 2024/04/12

SmartJPEG for Linux(以下 SmartJPEG)は、長年にわたり画像最適化技術を提供し続けているOPTPiXが提供する、画像再圧縮ソリューションです。
SmartJPEGは、手作業では困難な「画像ごとに最適な圧縮率の算出」を自動的に行い、JPEG圧縮を行います。このため、画質をほとんど落とすことなくJPEGファイルのサイズを簡単に最小限まで小さくすることが可能となります。
軽量化が重視されるウェブサイト、大量の画像を扱うショッピングサイト、クラウドストレージのコスト節約、スマートフォン向けのアプリケーションなど、あらゆるジャンルで大きな威力を発揮します。

- 使用許諾契約書は、「SmartJPEG for Linux」（以下、「本ソフトウェア」という）のご使用条件等を定めたものです。本契約の全部または一部に同意できない場合は、直ちに本ソフトウェアの使用を中止し、お客様の端末から本ソフトウェアをアンインストールしてください。
- 本ドキュメントに記載の内容はご契約のお客様のみに開示される秘密情報です。情報のお取り扱いにご注意ください。

# 目次

この導入ガイドでは、SmartJPEG の基本的な使い方を解説しています。
お使いの Linux 環境に SmartJPEG がインストールされていて、一般ユーザーとして実行できる状態を想定しています。

- 画像サイズダウン
- 画像メイクアップ
- 画像の拡大縮小・回転
- PNGファイルの縮小もおまかせ
- アニメーションGIFの変換も可能
- もっと使いこなそう

- 本ドキュメントはSmartJPEG Version 2.62.00の仕様に基づいて記述しています。
- SmartJPEGのインストール方法は、「SmartJPEG インストールガイド」をご参照ください。
- SmartJPEG の詳細な使い方については「SmartJPEG 仕様書」をご参照ください。

# 画像サイズダウン

## ファイルサイズの縮小化

SmartJPEG のもっとも基本的な機能は、必要充分な画質で再圧縮することで、画像のファイルサイズを小さくすることです。
入力画像ファイル名は `-in` オプションで、出力画像ファイル名は `-out` オプションで指定します。
カレントディレクトリに画像ファイル(image1.jpg)を用意し、コマンドラインで次のように入力してみてください。
なお、入力と出力に同じファイルを指定し、元画像を上書きすることはできませんのでご注意ください(指定した場合の動作は不定となります)。

`smartjpeg -in image1.jpg -out result1.jpg`

問題なく変換されると「`Successful.`」と表示されて、カレントディレクトリには新たに `result1.jpg` という画像ファイルが生成されます。
`ls` コマンドを使って、結果を確認してみましょう。

`Successful.`
`ls -l *.jpg`
`-rw-rw-r-- 1 tester tester 164618 Jul 7 10:53 image1.jpg -rw-rw-r-- 1 tester tester 84480 Mar 10 14:26 result1.jpg`

ここでは、変換された出力画像(result1.jpg)のファイルサイズが、元のファイルに比べて半分以下になっていることがわかります。
両方の画像を拡大せずに比べる限りは、変化はほとんど気にならないでしょう。 ただし、拡大表示すると、例えば左上の"ISO 300"の文字の周りが、変換後画像ではモヤモヤしていることがわかります。SmartJPEGは、このように等倍表示では気にならない範囲で、適切に圧縮率を高めることで、見た目の品質を維持したまま、ファイルサイズを縮小しています(それぞれの画像をクリックすると、その画像だけを表示できます)

元画像(image1.jpg)
変換後の画像(result1.jpg)
SmartJPEG は元画像の内容に合わせた圧縮処理を行います。ファイルサイズがどれくらい縮小されるかは、元画像によって異なります。大きく削減される場合もあれば、ほとんど変わらない場合もありますので、ご注意ください。

## サイズと品質の優先度選択

SmartJPEG は、`-reducemode` オプションで、必要とする品質を設定しておくことで、画像ごとに適切な圧縮率・品質で自動的に圧縮することができます。圧縮率は、8段階から選択することができます。

`smartjpeg -in image2.jpg -out result2-mode7.jpg -reducemode 7`
`Successful.`
`ls -l *.jpg`
`-rw-rw-r-- 1 tester tester 98271 Jul 7 10:53 image2.jpg -rw-rw-r-- 1 tester tester 45775 Mar 10 15:01 result2-mode5.jpg -rw-rw-r-- 1 tester tester 23795 Mar 10 15:01 result2-mode7.jpg`

`-reducemode 7`(圧縮率の高い設定)で変換した画像(result2-mode7.jpg)と、`-reducemode 5`(デフォルト)で変換した画像(result2-mode5.jpg)と比べてみてください。

`-reducemode 7`で変換した画像(result2-mode7.jpg)
デフォルト値(`-reducemode 5`)で変換した画像(result2-mode5.jpg)

# 画像メイクアップ

オークションサイトやSNSなどで、一般の方から投稿された画像の見栄えを調整したい場合にはメイクアップ機能が便利です。機能を利用するには `-makeup on` オプションを指定します。
なお、メイクアップ機能を利用するには、別途ライセンスが必要です。

ここでは、サンプル画像(makeup_before.jpg)をメイクアップ機能で加工してみます。

`smartjpeg -in makeup_before.jpg -out makeup_normal.jpg -makeup on`
`Successful.`
`ls -l makeup*.jpg`
`-rw-rw-r-- 1 tester tester 71362 Jul 5 18:10 makeup_before.jpg -rw-rw-r-- 1 tester tester 44569 Mar 10 15:35 makeup_normal.jpg`

出力結果を見比べてみると、元画像の色合いをベースに、より明るい画像になっていることがわかります。

元画像(makeup_before.jpg)
変換後の画像(makeup_normal.jpg)

* なるべく元画像の色合いを保つように調整を行いますが、画像によっては意図しない結果になる場合がありますのでご注意ください。

# 画像の拡大縮小・回転

## 画像の縦横(ピクセル)サイズを小さくする

デジタルカメラやハイエンドのスマートフォンで撮影した画像をWebサイトに掲載する場合など、そのままでは不必要に大きく、サイトのストレージを圧迫したり、通信量が増大する場合があります。
SmartJPEGを使って掲載に必要な大きさに縮小しておけば、Webサイトは軽量化され、利用者の負担も軽減されます。また、SmartJPEGでは画像を縮小するだけでなく拡大することも可能です。
SmartJPEGには画像サイズを変更するためのオプションがいくつかありますが、どのオプションを指定した場合でも、アスペクト比(画像の縦横比)は変わりません。縦長や横長への変形は行えません。

ここでは例として、幅384ピクセル×高さ480ピクセルのサンプル画像(image1.jpg)を、幅を150ピクセルに縮小してみましょう。コマンドラインオプションで次のように指定します。

`smartjpeg -in image1.jpg -out result1-w150.jpg -width 150`
`Successful.`
`ls -l *.jpg`
`-rw-rw-r-- 1 tester tester 164618 Jul 7 10:53 image1.jpg -rw-rw-r-- 1 tester tester 84480 Mar 10 14:26 result1.jpg -rw-rw-r-- 1 tester tester 15193 Mar 10 14:36 result1-w150.jpg`

画像が小さくなったことで、ファイルサイズも大幅に縮小されていることがわかります(それぞれの画像をクリックすると、その違いがよくわかります)。

元画像(image1.jpg)
変換後の画像(result1-w150.jpg)

画像サイズを小さくするオプションは他にもあります。詳しくは「SmartJPEG 仕様書」を参照してください。

- -width: 幅を基準に縮小します。
- -height: 高さを基準に縮小します。
- -longside: 写真が縦長か横長かわからない場合に「長い方」を基準に縮小します。
- -zoom: 伸縮させる倍率を百分率(1～999%)で指定します。

## 回転

この他、-rotatel(左回転)や -rotater(右回転)オプションを使って、90度単位で画像を左右に回転できます。
詳しくは「SmartJPEG 仕様書」を参照してください。

# PNGファイルの縮小もおまかせ

SmartJPEG はJPEGファイルの圧縮に加え、PNGファイルのサイズ縮小も勿論可能です。
なお、PNGファイルの出力には「PNG・GIF出力ライセンス」が必要です。ライセンスがない場合エラーになり、画像変換は行われません。

## PNGファイルを縮小するには

PNGファイルのサイズダウンに特別な手順は必要ありません。JPEGファイルの場合と同じように、`-in` オプションと `-out` オプションで入力PNGファイル名と出力PNGファイル名を指定します。
カレントディレクトリに画像ファイル(image4.png)を用意し、コマンドラインで次のように入力してみましょう。

`smartjpeg -in image4.png-out result4.png`

画像が変換されるとカレントディレクトリに新たに `result4.png` という画像ファイルが生成されます。
`ls` コマンドを使って、結果を確認してみましょう。

`ls -l *.png`
`-rw-rw-r-- 1 tester tester 357132 Mar 10 14:23 image4.png -rw-rw-r-- 1 tester tester 92975 Mar 10 14:23 result4.png`

変換された出力画像(result4.png)のファイルサイズが、元画像の1/3以下になっていることがわかります。
画質を比べてみましょう。元の画像では75286色あった色数が、出力画像では256色に減色されていますが、違いはほとんどわかりません。
OPTPiXが長年培ってきた画像減色技術により、見た目の画質を保ったまま使用色数を減らし、ファイルサイズを大幅に縮小することを実現しています(それぞれの画像をクリックすると、その画像だけを表示できます)。

元画像(image4.png)
変換後の画像(result4.png)

PNGファイルの縮小においても、SmartJPEG は元画像の内容に合わせた圧縮または減色処理を行います。ファイルサイズがどのくらい縮小されるか、色数がどのくらい減色されるかは元画像によって異なります。
また、JPEGファイルの場合と同様に、`-reducemode` オプションで圧縮率・品質のバランスを調整することができますので、各モードの結果を比較し、目的に合ったモードを選択することをお奨めします。

# アニメーションGIFの変換も可能

SmartJPEG はJPEGやPNGファイルの圧縮に加え、アニメーションGIFファイルの変換も行えます。この機能により、各フレームの見た目の画質を保ったまま、更にアニメーションGIFのファイルサイズを小さくできます。
なお、アニメーションGIFファイルの変換には「アニメーションライセンス」が必要です。ライセンスがない状態でアニメーションGIF変換オプションを指定するとエラーとなり、画像変換は行われません。

## アニメーションGIF変換を行うには

お手持ちのアニメーションGIFを圧縮し、ファイルサイズを更に小さくするには、入力ファイルとして変換したいアニメーションGIFファイル、出力ファイル名としてGIFファイルを指定すると共に、`-gifanime on` オプション(アニメーションGIF変換)を指定します。

`smartjpeg -in ss_splash.gif -out ss_splash_result.gif -gifanime on`
`Successful.`
`ls -l *.gif`
`-rw-rw-r-- 1 tester tester 273588 Mar 10 16:47 ss_splash.gif -rw-rw-r-- 1 tester tester 120767 Mar 10 16:58 ss_splash_result.gif`

変換が終了すると、カレントディレクトリに指定したアニメーションGIFファイルが生成されます。ご覧のように出力画像(ss_splash_result.gif)のファイルサイズが、元ファイルの約1/3になっていることがわかります。画質も元のアニメーションと殆ど変わりありません。再生回数やフレーム表示のタイミングも元画像のデータがそのまま引き継がれます。また、JPEGやPNGファイルの場合と同様に、`-reducemode` オプションで圧縮率・品質のバランスを調整することが可能です。

元アニメ(ss_splash.gif)
変換後のアニメ(ss_splash_result.gif)
さらにSmartJPEGでは、`-loadserial` オプションを指定することで、入力ファイルとして指定された静止画の連番ファイルを連結し、これをアニメーションGIFとして出力することも可能です。
このように SmartJPEG はアニメーションGIFの省サイズ化やアニメーションファイルの作成にも威力を発揮します。

# もっと使いこなそう

SmartJPEG はデフォルトでファイルサイズと処理速度のバランスを考慮した処理を行っていますが、オプションを指定することで、より高速に実行することも可能です。 この項では、SmartJPEG による画像圧縮をより速く行うためのテクニックと、SmartJPEG のJPEGファイル内の情報の扱いについて説明していきます。

## より速く・より早く実行するには

### 圧縮処理をより速く実行したい

「ファイルの軽量化は重要だが、準備に掛かる時間も等しく重要」「ファイルサイズが少し大きくなっても構わないので、処理時間を短縮したい」という方のために、高速処理オプションを用意しています。
高速処理を行うには -jpegspeed rapid オプションを指定します。このオプションを指定することで、デフォルト時に比べ、処理速度を1.5～2倍程度高速化できます。
なお、このオプションは縮小化を緩和するため、デフォルト時に比べファイルサイズがやや大きくなります。画質も若干向上しますが、画質対容量のトータルでのパフォーマンスはデフォルトの処理よりも劣るケースがありますのでご注意ください。

### 大量のファイルを短時間で処理したい

大量のファイルをより短時間で圧縮したい場合は、SmartJPEG コマンドを複数同時に起動する手法が使用できます(マルチプロセス起動)。
例えばファイルをグループ分けし、それぞれのグループに対して SmartJPEG を同時実行することで、ファイルを一つずつ処理した場合に比べ、トータルの処理時間を大幅に短縮することができます。
SmartJPEG はこうしたマルチプロセスでの実行に際して良好なパフォーマンスを発揮できるよう、内部でマルチスレッド処理を行わないようになっています。

## Exif情報の処理

ここではJPEGファイルに含まれるExif情報の扱いについて説明します。

### 画像の回転

SmartJPEG は、Exif回転情報に基づいて画像を回転して出力しますので、スマートフォンやデジタルカメラで撮影した写真等も、正しい向きで出力できます。
またExif回転を行うかどうかは -jpegexifrotate オプションにより指定可能です。

オプション | 説明
--- | ---
-jpegexifrotate off | Exif回転情報による画像の回転は行いません。
-jpegexifrotate on | Exif回転情報がある場合、これに基づき画像回転を行います。(省略時のデフォルト) 回転は情報の先頭に記述されているデータに基づいて行います(一般的なWebブラウザ等と同じ処理です)。

### Exif情報を残さないので安心

SmartJPEG は、回転など必要な処理を行った上で、ファイル出力時にExif情報を必ず削除しています。元画像に意図せず撮影日時やGPS情報などが含まれていたとしても、これを削除しますので、ここから個人情報が特定されることはありません。
SmartJPEG で画像を圧縮することで、より軽い、より安心できるサービスを提供することが可能になります。

## ICCプロファイルの処理

デジタルカメラやスマートフォンのカメラで撮影保存したJPEG画像や、Adobe Photoshopなどで編集保存したJPEG/PNG画像には、一般的にカラープロファイル(ICCプロファイル)が含まれています。ICCプロファイルが含まれていると、その分ファイルサイズが大きくなるため、SmartJPEG はデフォルトで以下のように処理しています(-imageiccp auto 指定時の動作と同じです)。

- 画像が小さいかICCプロファイルが大きい場合

1. ICCプロファイルで画像をsRGB色空間に変換します。各種ブラウザはICCプロファイルの付いていない画像をsRGB色空間として扱うためです。
2. ICCプロファイルを破棄してファイルを出力します。

- 上記以外の場合はICCプロファイルを保持してファイルを出力します。

元画像ごとの自動判定ではなく、「必ずsRGB変換してからサイズ縮小のために破棄したい」という場合は、-imageiccp convert を指定すると良いでしょう。

なお、CMYKカラーの入力はサポート外となっております。SmartJPEG ではCMYKからsRGBへの簡易変換を行うようになっていますが、あくまで便宜的・簡易的なもので、正確な変換ではありませんのでご注意ください。また、WebではCMYK-JPEGは使用しないため、ChromeやFirefox等のブラウザでも正しく表示されません。

Copyright © 2017-2021 Web Technology Corp.
Copyright © CRI Middleware Co., Ltd.

一部、ISO/JIS-SCIDの画像を使用しています。