サブフォルダが多いフォルダがあるとしましょう。各サブフォルダには多くの画像が含まれています。
以下の条件で各サブフォルダの画像サイズを調整したいと思います。
- 画像の高さが1000ピクセル未満の場合はコメントを付けます。
- 画像の高さが1001〜2500ピクセルの場合は、サイズを70%に調整してください。
- 画像の高さが2501〜3000ピクセルの場合は、サイズを50%に調整してください。
- 画像の高さが3000ピクセルを超える場合は、サイズを30%に調整してください。
- 新しい画像が古い画像を置き換えます。
通常、情報を1つずつ調べて、mogrifyコマンドを使用していくつかの画像でこれを実行できますが、今回はサブフォルダが多すぎます。私は新しいLinuxユーザーなので、助けてくれてありがとう。
答え1
コードを修正しましたジアチャオ次のように提供し、動作するようにしてください。
MIN_RES=1001
MAX_RES=2500
RES11=2501
RES12=3000
RES21=3001
RES22=10000
for i in *.jpg; do
YRES=$(identify -verbose $i|grep Geometry: |cut -d 'x' -f2 |sed 's|+.*||g')
if [ $YRES -gt $MIN_RES ] && [ $YRES -lt $MAX_RES ]; then
echo "Found: $i with y-res: $YRES";
# convert
convert -resize 70% $i $i;
elif [ $YRES -gt $RES11 ] && [ $YRES -lt $RES12 ]; then
echo "Found: $i with y-res: $YRES";
convert -resize 50% $i $i;
else [ $YRES -gt $RES21 ] && [ $YRES -lt $RES22 ]
echo "Found: $i with y-res: $YRES";
convert -resize 30% $i $i;
fi
done
答え2
ここには次のものがあります。https://askubuntu.com/questions/1164/how-to-easily-resize-images-via-command-lineImageMagickが提供するコマンドラインツールのいくつかの詳細。
したがって、単一の画像に対してこれを行うには、次の手順を実行します。
識別ツールを使用して画像のメタデータを読みます。例:
$ /tmp/p1.jpg /tmp/p1.jpg 識別 JPEG 1487x925 1487x925+0+0 8 ビット sRGB 314106B 0.000u 0:00.000
出力を解釈して1487x925サイズを抽出
私のルールを適用して変換コマンドを作成します。
「find」コマンドの結果に基づくループを使用すると、1つ以上のフォルダに対してこの操作を繰り返すことができます。
答え3
ImageMagicツールボックスの「認識」を使用して画像の解像度を読み取り、「変換」を使用して画像を変換できます。このような:
MIN_RES=100
MAX_RES=500
for i in *.jpg; do
YRES=$(identify -verbose $i|grep Geometry: |cut -d 'x' -f2 |sed 's|+.*||g')
if [ $YRES -gt $MIN_RES ] && [ $YRES -lt $MAX_RES ]; then
echo "Found: $i with y-res: $YRES";
# convert
convert -resize 50% $i $i;
fi
done