画像を特定の割合で切り取ることができるonelinerコマンドを探しています。
入力がファイル名とスライスサイズであるとします。これを達成するための標準的なコマンドラインツールはありますか?私の画像は大きく混乱していたので、ImageMagickを試してみましたが、成功しませんでした(大きく、ほとんど透明でpngです)。
答え1
私はこの質問が少し古い質問であることを知っていますが、JRWのソリューションを使用してスクリプトを作成しました。スクリプトは、イメージファイルを指定されたサイズの一連のイメージに分割します。
#!/bin/bash
FILE=$1
FILENOEXT=${FILE%.*}
SLICEWIDTH=$2
WIDTH=`file $FILE | cut -f5 -d" "`
NUMOFSLICES=`echo "scale=2; $WIDTH/$SLICEWIDTH+1" | bc`
for i in `seq $NUMOFSLICES`
do
LAST=$(($SLICEWIDTH * $i - $SLICEWIDTH))
pngtopnm $FILE | pnmcut -left $LAST -width $SLICEWIDTH | pnmtopng > cropped-$FILENOEXT-$i.png
done
pngtopnm $FILE | pnmcut -left $LAST | pnmtopng > cropped-$FILENOEXT-$i.png
パラメーター1は、ファイル名とブロックの2番目の幅です。ほとんどの場合、スクリプトは最後のブロックからエラーを返しますが、最後のブロックがループの外側で切り捨てられた後は、すべてがうまく機能します... :)
答え2
ネットワークPBMツールはこれを行うことができます。トリミングについて話す場合:
$ pngtopnm image.png | pnmcut -width 500 -height 500 | pnmtopng > image_cropped.png
サイズを変更するには、pnmscale を使用します。