1

フォルダー上のすべての画像を処理し、そのサイズを変更する非常に単純なシェル スクリプトが必要です。画像処理は gimp script-fu で行われ、シェル スクリプトが行う必要があるのは for ループだけです。

私はこれを作りました:

#!/bin/sh

mkdir processed
for image in `ls`
do
    if [ $image != "script.sh" ]
    then
        if [ $image != "processed" ]
        then
            gimp -i -b '(let* ( (img (gimp-file-load 1 "1.jpg" "1.jpg")) (drw (gimp-image-get-active-drawable (car img))) ) (gimp-image-scale-full 1 400 300 3) (file-jpeg-save 1 (car img) (car drw) "processed/1.jpg" "1.jpg" 0.6 0 1 1 "" 3 0 0 2) (gimp-quit 0) )'
        fi
    fi
done

このコードは機能しますが、script-fu コードではファイル名として 1.jpg を入力し、もちろん $image 変数の値が表示されるようにしたいと考えています。私のシェルスクリプトの知識は限られており、コマンド内に変数を配置する方法に迷っています。

手伝って頂けますか?御時間ありがとうございます :)

4

3 に答える 3

2

for image in *の代わりに使用しlsます。

変数を Gimp スクリプトに渡し、Gimp の引用符を保持するには、外側の引用符に二重引用符を使用し、内側の引用符をエスケープする必要があります。

gimp -i -b "(let* ( (img (gimp-file-load 1 \"$image\" \"$image\")) (drw (gimp-image-get-active-drawable (car img))) ) (gimp-image-scale-full 1 400 300 3) (file-jpeg-save 1 (car img) (car drw) \"processed/$image\" \"$image\" 0.6 0 1 1 "" 3 0 0 2) (gimp-quit 0) )"

スクリプトを簡素化することもできます。

mkdir processed
for image in *.jpg
do
    if [[ -f $image ]]
    then
        gimp ...
    fi
done

さらに拡張機能を含める場合:

for image in *.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}
于 2011-02-28T14:40:47.957 に答える
2

より読みやすい別のアプローチ:

mkdir processed

gimp_script_template='(let* ( 
    (img (gimp-file-load 1 "%s" "%s")) 
    (drw (gimp-image-get-active-drawable (car img))) 
  ) 
  (gimp-image-scale-full 1 400 300 3) 
  (file-jpeg-save 1 (car img) (car drw) "processed/%s" "%s" 0.6 0 1 1 "" 3 0 0 2) 
  (gimp-quit 0) 
)'

for img in *; do
    [ ! -f "$img" ] && continue
    [ "$img" = "script.sh" ] && continue
    gimp_script="$( printf "$gimp_script_template" "$img" "$img" "$img" "$img" )"
    gimp -i -b "$gimp_script"
done
于 2011-02-28T15:34:25.933 に答える
0

あなたが試すことができます

"'(let* ( (img (gimp-file-load 1 "$image" "$image")) (drw (gimp-image-get-active-drawable (car img))) ) (gimp-image-scale-full 1 400 300 3) (file-jpeg-save 1 (car img) (car drw) "processed/$image" "$image" 0.6 0 1 1 "" 3 0 0 2) (gimp-quit 0) )'"
于 2011-02-28T14:30:23.300 に答える