imagemagick変換:トリミングを最大Xピクセルに制限

imagemagick変換:トリミングを最大Xピクセルに制限

ImageMagick(debian stableでは6.9.11-60)を使用してスキャンしたページ(jpgまたはTIFF)で約24pxを剃りたいのですが、その領域が実際に「空白」(つまり、ほとんど白色)の場合にのみ可能です。

使用しますが、-shaveその領域が白でなくてもピクセルを削除します。
それから私は考えましたが、-trim最大24pxに制限する方法がわかりません。

Q:スキャンした画像の左右24pxを削除する方法はありますが、範囲が空の場合のみ
IMを使わない方がいいと思ったことがまず聞きました。

答え1

私はImageMagickの専門家ではないので、一言で言うことはできませんが、実行して-trim結果を確認することはできます。 pngを出力すると、元の画像から新しい画像のソースに関する情報が保存されます。キャンバス(jpgでも)。結果画像のxオフセットと幅を使用して、切り取りidentifyたい24ピクセルを超えるかどうかを抽出して確認できます。たとえば-fuzz 10%、トリムが白いピクセル以上になるようにオプションで追加できます。明らかに切り取ることにした場合は、-shavejpgを使用して出力できます。内蔵画像を使用した例は次のとおりです。

check(){
  origwidth=$(convert out.png -format "%W" info:)
  left=$(     convert out.png -format "%X" info:) 
  width=$(    convert out.png -format "%w" info:)
  let right=origwidth-left-width
  if [ "$left" -lt 24 -a "$right" -lt 24 ]
  then  echo "trim ok"
  else  echo "dont trim"
  fi
}

convert rose:    -resize 160x160 inset.jpg
convert granite: -resize 200x200 bg.jpg

composite inset.jpg -geometry +20+20 bg.jpg input.jpg
convert   input.jpg -fuzz 10% -trim         out.png
check

composite inset.jpg -geometry +30+20 bg.jpg input.jpg
convert   input.jpg -fuzz 10% -trim         out.png
check

関連情報