ImageMagickを使用したWindowsでのバッチ画像処理。 パートI

ImageMagickは、無料のクロスプラットフォームグラフィックエディターです。

複数のコンソールユーティリティで構成されています。 その能力は、空の星として数えることはできません。

ネットには、その使い方のがたくさんあります。 しかし、それらのほとんどはLinuxまたはPHP用です。 Windowsの場合、彼らの猫は泣いた。 ギャップを埋めるときです。



最初はインストールでした



ImageMagickには多くのバージョンがあります。 マシンがもう若くなく、メモリが1024 MB以下の場合-Q8が用意されています。 それ以外の場合は、 Q16をダウンロードします。



インストール中に、チェックボックスをオンにします。







したがって、ユーティリティのセット全体を取得し、それらをパスシステム変数に追加します。



ImageMagickを使用したPNGおよびJPGのバッチ圧縮とサイズ変更



サイズ変更と圧縮は、2つのImageMagickユーティリティによって実行されます。

mogrify.exe-元の画像を変更します。

convert.exe-ソースに基づいて、新しい変更されたイメージを作成します。


Jpg。 圧縮およびサイズ変更のための主要なImageMagickオプション



- 品質 80-圧縮レベル( 80はAdobe Photoshopで約60です

- フィルタ Lanczos- Lanczosフィルタ。

-gaussian-blur 0.05-ガウスぼかし

パラメーター:半径×シグマ(ピクセル単位)。 シグマは、 正規ガウス分布からの標準偏差です。 わずかなぼかしはサイズを縮小しますが、画像を拡大縮小するときの品質を低下させます。

- サンプリング係数 4:2:0- 色のサブサンプリング

4:2:0の値は、カラーチャンネルの解像度を半分に減らします。 -qualityパラメーターが90未満の場合にのみ適用されます。 -sampling-factorパラメーターは、色をダウンサンプリングするためにJPEGエンコーダーによって使用されるサンプリング係数を決定します。 このパラメーターを省略すると、JPEGライブラリーは独自のデフォルト値を使用します。 -define jpegパラメーターdct-method = floatと一緒に使用することをお勧めしますこれは、より正確な離散浮動小数点コサイン変換を使用するため、ファイルサイズを大きくすることなく、品質をわずかに改善します。

- アンシャープ 0x3 + 1 + 0- イメージの鮮明さが増します

値:半径×シグマ+ゲイン+しきい値。

半径 -ガウスぼかしの半径(ピクセル単位)。中心ピクセルはカウントされません( デフォルトは0です )。 許容できる結果を得るには、半径をシグマより大きくする必要があります。 設定されていないか、ゼロに設定されている場合、ImageMagickは可能な最大半径を計算します。これにより、ガウス分布の許容可能な結果が得られます。

シグマは、ピクセル単位のガウスぼかしの標準偏差です( デフォルトでは1.0 )。 これは重要な引数であり、実際に発生するぼかしの量を決定します。

ゲイン -元の画像とぼやけた画像の差の量。元の画像に追加されますデフォルト1.0 )。

しきい値 -画像間の定量的差の値( デフォルトでは0.05 )。

-colorspace RGB-RGBカラースペース。

-interlace Plane- プログレッシブJPEGが必要な場合に使用されます。

-strip-すべてのメタデータ( exif、カラープロファイルなど )を削除します。

- サイズ変更 -ピクセル単位で画像のサイズを変更します。

-thumbnail--resizeと同様のオプション。 サイズ変更に加えて、画像のメタデータも削除します。 彼らは、それが-resizeより速く、より良く動くと言います。

「最良の」設定はないことを理解することが重要です。 同じ設定をすべての画像に適用しても、最良の結果は得られません。 一部の画像がぼやけて表示されるか、またはその逆にシャープすぎる場合があります。 したがって、自分に合った「平均」パラメータを選択する必要があります。
-thumbnailパラメーターの使用例:



アスペクト比を維持しながら、幅を100ピクセルに変更します( 高さは比例して変化します ):



convert img.jpg -thumbnail 100x img1.jpg
      
      





縦横比を維持しながら、高さを150ピクセルに変更します( 幅は比例して変化します )。



 convert img.jpg -thumbnail x150 img1.jpg
      
      





アスペクト比なしのサイズ変更:



 convert img.jpg -thumbnail 100x150! img1.jpg
      
      





%( パーセント )のサイズ変更:



 convert img.jpg -thumbnail 20% img1.jpg
      
      





便利なバッチ画像処理のために、 バッチファイルを使用します 。 これらは、拡張子が.BATまたは.CMDのバッチファイルです。 jpgの例では、圧縮を品質80に設定し、幅を800ピクセルに変更します。

バッチファイルは、起動元のディレクトリ内の画像のみを変更します。 彼は「Compressed」フォルダを作成し、変更された画像をそこに書き込み、「_ Compressed.jpg」を名前に追加します。



JPG-損失のある圧縮およびサイズ変更のためのバッチファイル



私の意見では、最適なjpgのオプション:
 @Echo Off Setlocal color 0a set "Source=%~dp0" cd /d "%~dp0" if not exist ".\*.jpg" ( echo. echo FAILED! Files *.jpg not found. echo. pause endlocal & exit ) else ( echo. echo Compress all JPG in a Directory: echo %Source% if not exist Compressed mkdir Compressed for %%i in (*.jpg) do ( convert ^ -quality 80 ^ -filter Lanczos ^ -sampling-factor 4:2:0 ^ -define jpeg:dct-method=float ^ -thumbnail 800x ^ "%%i" ".\Compressed\%%~ni_Compressed.jpg" ) )&& cls echo. echo Process done! echo. pause endlocal & exit
      
      







このバッチファイルは何をしますか? 起動元のディレクトリで、拡張子が* .jpgのすべてのファイルを検索します。 ここでは、「Compressed」フォルダを作成し、処理済みのすべての画像をコピーして、名前に「_Compressed.jpg」を追加します。


mogrify.exeユーティリティを使用したバッチファイルの例を示します(起動元のディレクトリにあるすべての.jpgイメージ処理して上書きします )。



mogrify.exeユーティリティを使用したバッチファイルの例:
 @Echo Off Setlocal color 0a set "Source=%~dp0" cd /d "%~dp0" if not exist ".\*.jpg" ( echo. echo FAILED! Files *.jpg not found. echo. pause endlocal & exit ) else ( echo. echo: mogrify: compress all JPG in a Directory: echo: %Source% for %%i in (*.jpg) do ( mogrify ^ -quality 80 ^ -filter Lanczos ^ -sampling-factor 4:2:0 ^ -define jpeg:dct-method=float ^ -gaussian-blur 0.05 ^ -thumbnail 800x ^ "%%i" ) )&& cls echo. echo Process done! echo. pause endlocal & exit
      
      









PNG 圧縮およびサイズ変更のための主要なImageMagickオプション



PNGは可逆圧縮され、透明度( アルファチャネル )を保持します。

ただし、損失を加えて圧縮することもできます。 また、jpgと同様に、 -gaussian-blur、-strip、-resize、-thumbnail、-unsharpのオプションを使用できます

pngのオプションを含む多くのオプション:

-define png:compression-filter = 2

-define png:圧縮レベル = 9

-define png:compression-strategy = 1

- 255-なぜ256ではないのですか? 1はアルファチャネル用に予約されているためです。

- 深さ 8-ビット数。

- 品質 90-pngの場合、このパラメーターの動作原理はjpgの場合とは異なります。



これらのオプションの詳細については、ImageMagick Webサイトを参照してください。 味や色ごとにたくさんあります。 私は自分に合った平均的なパラメータを与えました。 次に、バッチファイルでどのように使用できるかを見てみましょう。



PNG-圧縮およびサイズ変更のためのバッチファイル



オプション1.損失なしで幅400ピクセルの圧縮とサイズ変更:
 @echo off Setlocal color 0a set "Source=%~dp0" cd /d "%~dp0" if not exist ".\*.png" ( echo. echo FAILED! Files *.png not found. echo. pause endlocal & exit ) else ( echo. echo Lossy compress all PNG in a Directory: echo %Source% if not exist Compressed mkdir Compressed FOR %%i IN (.\*.png) DO ( convert ^ -thumbnail 400x ^ -define png:compression-level=9 ^ -define png:compression-filter=2 ^ -define png:compression-strategy=1 ^ "%%i" ".\Compressed\%%~ni_Compressed.png" ) )&& cls echo. echo Process done! echo. pause endlocal & exit
      
      





オプション2.幅を400pxに圧縮してサイズを変更します:
 @Echo Off Setlocal color 0a set Source="%~dp0" cd /d "%~dp0" if not exist ".\*.png" ( echo. echo FAILED! Files *.png not found. echo. pause endlocal & exit ) else ( echo. echo Lossy compress all PNG in a Directory: echo %Source% if not exist Compressed mkdir Compressed FOR %%i IN (.\*.png) DO ( convert ^ -thumbnail 400x ^ -colors 255 ^ -depth 8 ^ -quality 90 ^ "%%i" ".\Compressed\%%~ni_Compressed.png" ) )&& cls echo. echo Process done! echo. pause endlocal & exit
      
      





これらのバッチファイルのオプションとパラメーター値を変更することにより、バッチの圧縮とサイズ変更に適したオプションを選択できます。



バッチファイルを変更して動作が停止した場合はどうすればよいですか?



  1. 行末のスペースをすべて削除します。

    メモ帳++では、これは次のように実行できます。すべてを選択、編集-スペースを使用した操作-末尾のスペースを削除して保存します。 または:Ctrl + A-Ctrl + Shift + B-Ctrl + S
  2. エンコーディングがBOMなしのUTF-8かどうかを確認します。 バッチファイルでキリル文字を使用する場合、エンコードはOEM 866です。
  3. この形式に適切なオプションを使用していることを確認してください。


すべてのバッチファイルをダウンロード>>



デザート用



人気のあるすべてのPNGコンプレッサーをテストしました。 私自身にとって、最高の非可逆PNG圧縮はpngquantになります。 スクリーンショットの圧縮に適用する場合。 他の画像で-テストされていません。 非常に高速に動作します。 オプション「--strip」を使用すると、すべてのメタデータが削除されます。

pngquantは、アルファチャネルを備えたより効率的な8ビットPNG形式(多くの場合、24/32ビットPNGファイルよりも60〜80%小さい)に変換することにより、ファイルサイズを大幅に削減するPNGコンプレッサーです。 圧縮画像は完全に標準に準拠しており、すべてのWebブラウザとオペレーティングシステムでサポートされています。

Pngquantコマンドラインオプション。



そしてもちろん、バッチ処理用のカラシニコフ突撃銃もあります。

 @Echo Off Setlocal color 0a set "Source=%~dp0" cd /d "%~dp0" if not exist ".\*.png" ( echo. echo FAILED! Files *.png not found. echo. pause endlocal & exit ) else ( echo. echo Lossy compress all PNG in a Directory: echo %Source% if not exist Compressed mkdir Compressed for %%i in (*.png) do ( "pngquant.exe" --strip "%%i" -o ".\Compressed\%%~ni_Compressed.png" && (Echo "%%i" - OK& Rem.) || Echo === "%%i" - FAILED! ) ) echo. echo Process done! echo. pause endlocal & exit
      
      





すべてが機能するには、 pngquant.exeをバッチファイルの横に配置する必要があります。 または、任意のフォルダーにコピーし、 「pngquant.exe」の代わりにバッチファイルで、パス「YourPath \ pngquant.exe」を指定します

注:何らかの理由で、pngquantはキリル文字の名前のファイルを処理しません。



しかし、気が散りました。 2番目のパートでは、ImageMagickを使用して透かしをバッチで追加する方法について説明します。



All Articles