Linuxにおいて画像のファイルサイズを縮小する方法 - CLIとGUI
この記事では、Linuxで画像のファイルサイズを減らすさまざまな方法について話します。画像の品質に対する関心の高まりと共に、画像ファイルのサイズも相当に増加しています。このような大きな画像のファイルサイズを減らす必要性は絶えませんので、この記事ではその課題を扱います。
画像ファイルのサイズを縮小するプロセスに迅速に入ってみましょう。
Linuxで画像サイズを縮小するために、convertコマンドを使用します。
このコマンドの適用に移る前に、システムに存在していることを確認しましょう。
convertコマンドはImageMagickパッケージに含まれています。Debian/Ubuntuのユーザーは、次のコマンドを実行してImageMagickをインストールすることができます。
sudo apt install imagemagick

パッケージがインストールされたら、man convert を実行してコマンドがサポートする様々な操作を確認できます。
画像の品質を低下させる。
画像のサイズを小さくする最も単純な方法は、画像の品質を劣化させることです。
convert <INPUT_FILE> -quality 10% <OUTPUT_FILE>

コンバートコマンドを使用すると、画像の品質が大幅に低下します。新しいファイルサイズを確認したい場合は、次のように行うことができます。
du -h jd_logo*

上記のコマンドでは、duコマンドを使用してLinuxのファイルで使用されているディスクの量を表示します。このコマンドでは、”jd_logo”のすべてのバージョンが占めるスペースの量を表示します。
Linuxで画像のファイルサイズをピクセルによって縮小する。
画像のファイルサイズを小さくするには、ピクセルの数を減らす必要があります。そのために、新しい幅と高さを指定する必要があります。
convert <INPUT_FILE> -resize 200x200 <OUTPUT_FILE>

画像のサイズを広げると、縮小された画像の品質の低下が観察されます。
コマンドで提供された寸法が元のアスペクト比を破っていたとしても、画像のアスペクト比は復元されます。変換のアイデアは、縮小された画像が指定された寸法内に収まる必要があるというものです。
画像を正確なサイズに縮小するためには、アスペクト比を無視して、リサイズパラメーターの後に「!」を使用する必要があります。
convert <INPUT_FILE> -resize 200x200! <OUTPUT_FILE>
画像形式を変換する
一部のウェブサイトは特定のファイル拡張子のみをサポートしており、そのためにコンバートコマンドは画像の形式を変換する機能を提供しています。
convert <INPUT_FILE> <OUTPUT_FILE>

パラメータが指定されない場合、品質が92%低下します。上記のスニペットでは、「.png」イメージファイルを「.jpg」ファイルに変換しました。
convertコマンドには、画像を回転させたり、効果を加えたり、画像に絵を描いたりするなど、数百の応用があります。画像のフォーマットツールをマスターするために、man convertというマニュアルページを参照することができます。
複数のファイルを変換するために、すべての画像に対してループを実行するbashスクリプトが必要です。複数の画像ファイルを処理する別の選択肢として、ImageMagickパッケージに含まれるmogrifyがあります。
2. 「mogrify」コマンドを使用する
mogrify [OPTIONS] [FILE_LIST]
「convert」と「mogrify」コマンドの主な違いは、mogrifyコマンドが元の画像ファイルに対して操作を適用する点であり、一方、convertは操作を適用しません。
さらに、mogrifyコマンドは複数のファイルに対してキューできる表現をサポートしています。例えば:
mogrify -quality 10 *.jpg

「convert」と「mogrify」のアプリケーションは、同じパッケージから派生しているため、まったく同じです。
3. PNGファイルの圧縮にはPngcrushを使用します。
pngcrushはPNG(Portable Network Graphics)ファイルの最適化ツールです。さまざまな圧縮方法やフィルターを通じて画像のファイルサイズを縮小します。
Debian/Ubuntuユーザーは、インストールのために以下のコマンドを実行できます。
sudo apt get install pngcrush
他のLinuxディストリビューションのユーザーは、通常のインストールコマンドに続いてpngcrushを使用してそれをインストールすることができます。
インストールが完了したら、次のように実行することでPNGファイルのサイズを削減できます。
pngcrush -brute <INPUT_FILE> <OUTPUT_FILE>

‘-brute’オプションは、ファイルを114のフィルター/圧縮方法に通すものです。拡張処理では数秒間かかります。ブルートフォース手法の代わりに、ユーザーは最適化のためのフィルター、レベル、戦略を選択することができます。
以下のように日本語で言い換えます。一つのオプションで十分です。
フィルターの種類やその他の特性は、マニュアルページ(man pngcrush)によって学ぶことができます。
4. JPGファイルにはJpegoptimを使用する。
jpegoptimは、JPG(Joint Photographic Group)ファイルの圧縮ツールです。このコマンドでは、画像サイズを減らすためのパラメータとしてパーセントと目標ファイルサイズがサポートされています。
インストールはかなり簡単です。
sudo apt install jpegoptim
インストールが完了したら、実行することができます。
jpegoptim --size=<TARGET_SIZE> <INPUT_FILE>

jpegoptimユーティリティは元の画像を上書きするため、バックアップ画像ファイルを保持することがおすすめです。このツールの最も便利な機能は、ターゲットファイルサイズを受け入れることで、特定のサイズの画像をアップロードする際に役立ちます。
上記の図で、260 KBのファイルを20KBの画像に圧縮しました。

画像の品質は、90%もの大幅なサイズ縮小があるにも関わらず、そのまま保たれています。このコマンドは、割合に基づいた圧縮もサポートしています。
マニュアルページの「man jpegoptim」を通じて、コマンドについてさらに詳しく学ぶことができます。
5. TrimageのGUIツールを利用する
trimage GUIツールは、基本的なドラッグアンドドロップソフトウェアです。追加されたファイルは自動的に可逆的なファイルサイズに圧縮されます。
インストールは以前の方法と同様です。
sudo apt install trimage
インストールが完了したら、システム上で「trimage」を検索することでアクセスできます。trimageウィンドウは次の画像のようになります。

サポートされる列は次のとおりです。
- Name of the file
- Size of the original image
- Size of the converted image
- Percentage of compression
そのツールは元の画像を上書きします。圧縮は損失のない圧縮であるため、最小限です。
GIMP(GNU画像操作プログラム)は、GUIベースの画像サイズ縮小において良い代替手段ですが、確かにオーバーキルです。
結論
Linuxで画像のファイルサイズを縮小する最も簡単で効果的な方法は、ImageMagickパッケージによって提供されるコマンドを使用することです。
記事が興味深く、また情報的な内容であったことを願っています。お読みいただき、ありがとうございます。
参考文献
PNGcrushの公式ウェブサイト
トリマージュ公式ウェブサイト