質問

多くの画像をトリミングする必要があります jpeg Linuxでは、右側の20ピクセル程度の損失を無効にします。

私がチェックしました jpegtran, 、しかし、トリミング前にピクセルのファイルサイズが必要であり、それでバッチファイルを構築する方法がわかりません。

画像の右側からプログラムで20ピクセルを失うにはどうすればよいですか?

役に立ちましたか?

解決

私のシェルスクリプトは少し錆びているので、このスクリプトを試す前に画像をバックアップしてください。

#!/bin/bash
FILES=/path/to/*.jpg

for f in $FILES
do
    identify $f | awk '{ split($3, f, "x"); f[1] -= 20; cl = sprintf("jpegtran -crop %dx%d+0+0 %s > new_%s", f[1], f[2], $1, $1); system(cl); }'
done

注意すべき点:

  • 正しい値へのパスを調整します
  • *.jpegが必要ですか?
  • identify ImageMagickコマンドです
  • awk からピクセルの寸法をつかみます identify パラメーターとして(幅が20px減少する)として使用するには) jpegtran 画像をトリミングします
  • 新しい画像は保存されます new_[old_name].jpg
  • jpegtran トリッピング領域を調整して、損失を無害にすることができます。結果の画像が正しいサイズであり、わずかに大きくないことを確認してください。

他のヒント

受け入れられている答えと非常によく似ていますが、以下はスペースを含むファイル名でも動作します。そして、それは間違いなく単純です、使用しています identify組み込み -format オプション 出力をawkで解析する代わりに。

#!/bin/bash

X=0; Y=0   # offset from top left corner

for f in /path/to/*.jpg; do
    read -r W H < <(identify -format '%w %h' "$f") # get width and height
    (( W -= 20 ))                                  # substract 20 from width
    out="${f%%.jpg}-crop-20.jpg"                   # add "-crop-20" to filename
    jpegtran -crop ${W}x$H+$X+$Y "$f" > "$out"     # crop
done
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top