GIMPバッチ画像処理

時々、フォトアルバムまたはスキャンしたドキュメントのパッケージをネットワークにアップロードする必要があります。 ほとんどの場合、最初に画像を縮小し、場合によっては追加の処理でラベルを追加する必要があります。 そして今、同じタイプの操作を実行するのが完全に面倒になったときがきました。 素晴らしい無料のGIMPエディターの素晴らしい自動化ツールを思い出します。



さまざまなアスペクト比でさまざまな形式で保存されたさまざまなサイズの写真がたくさんあるとします。 一般的に、難しいケース。 比率を考慮して、この動物園全体のサイズを調整し、指定された品質でJPEGで保存する必要があります。 はい、サイズをピクセル単位ではなくパーセント単位で設定したい場合があります。 さて、それでも、「C:\ images \ img_01 * .jpg」などのマスクでファイルを選択する必要があります。



座ってScript-Fu (GIMPでデフォルトで利用可能)で遊ぶ 最初のシナリオ:



(定義(バッチサイズ変更パターンサイズ品質)

(let *((filelist(cadr(file-glob pattern 1))))

(len(if(string?size)(string-length size)0))

(レート(if(and(> len 0)(char =?#\%(string-ref size(-len 1)))))(/(string-> number(substring size 0(-len 1))))100 )0))

(サイズ(if(> rate 0)0(if(> len 0)(string-> number size)size)))



(while(not(null?filelist))

(let *((filename(car filelist)))

(イメージ(car(gimp-file-load RUN-NONINTERACTIVE filename filename filename)))

(描画可能(car(gimp-image-get-active-layer image)))

(古い幅(car(gimp-image-width画像)))

(古い高さ(車(gimp-image-height画像)))

(幅(if(> rate 0)(* rate old-width)(if(> old-width old-height)size(* size(/ old-width old-height))))))

(高さ(if(> rate 0)(* rate old-height)(if(> old-width old-height)(*サイズ(/ old-height old-width))サイズ)))



(gimp-image-scaleイメージ幅width)

(file-jpeg-save RUN-NONINTERACTIVE画像描画可能ファイル名filename品質0 1 1 "" 2 1 0 0)

(gimp-image-deleteイメージ)



(set!filelist(cdr filelist))









この喜びを利用する最も簡単な方法は、(テキストまたはファイルから)Script-Fuコンソールに貼り付けてEnterキーを押すことです。 バッチサイズ変更機能が使用可能になりました。 (コンソールで)これを使用します: (batch-resize "C:\\images\\*.jpg" 640 1)



。 または、このように:( (batch-resize "C:\\images\\i_am_clever_*.*" "25%" 0.75)



。 行をスラッシュでエスケープする必要があることを忘れないでください。そのため、Windowsのパスでは、スラッシュを二重にする必要があります。 2番目のパラメーターは大きい方のサイズで、数値(ピクセル単位)または文字列(パーセンテージの場合、サイズはパーセントで計算されます)で示されます。 3番目は、保存されたJPEG画像の品質(0〜1)です。











さらに好奇心のために。 :)



file-jpeg-save関数では、保存された画像の品質に加えて、同じ品質とそれに応じてサイズに影響するいくつかのパラメーターが設定されます。 プロシージャビューアーでのこの関数のパラメーターの説明は理解できますが、どのインデックスがサブセレクト(最後から4番目のパラメーター)およびDCTメソッド(最後のパラメーター)の値に割り当てられるかはどこにも書かれていません。 プログラム自体からこれらのパラメーターの異なる値で画像を保存し、関数を使用して、ファイルのサイズごとに必要なインデックスを計算しました。



そのため、目的のサブサンプルを示すために、0-2×2–1×1–1×1(デフォルト、最悪のカラーレンダリング、最小のファイル)、1-2×1–1×1–1×1(4:2 :2、色はより良く送信されます)、2-1×1–1×1–1×1(色は歪まない、ファイルは他より大きくなります)、3-1×2–1×1–1×1(2に色再現に類似) ×1–1×1–1×1、大きい)。



DCTメソッド:0-整数、1-高速整数、2-浮動小数点。 視覚的にも速度においても、違いに気づかず、ファイルサイズもわずかに異なっていました。 理論的には、浮動小数点はより低速で、歪みが少なくなります。



上記で公開されたシナリオでは、整数法DCT(0)と、最適なカラーレンダリング(1×1–1×1–1×1(2))を持つサブサンプルタイプを使用します。



関連リンク:

1. 時代遅れではありますが、ロシア語でのScript-Fuの説明

2. Scheme言語の説明 。 ここでは、プロシージャビューアーにない関数をスパイできます。 ただし、すべてのScheme関数がScript-Fuで使用できるわけではないことに注意してください。

3. スキームの説明とウィキペディアへのリンク

4. GIMP 2.0 APIリファレンスガイド

5. さまざまなシナリオが分類されています。

6. その他のシナリオ

7.構文の強調表示と括弧のネストを使用したスクリプト



All Articles