하위 폴더가 많은 폴더가 있다고 가정해 보겠습니다. 각 하위 폴더에는 많은 이미지가 포함되어 있습니다.
다음 조건에서 각 하위 폴더의 이미지 크기를 조정하고 싶습니다.
- 이미지 높이가 1000픽셀 미만인 경우 주석을 답니다.
- 이미지 높이가 1001~2500픽셀 사이인 경우 크기를 70%로 조정하세요.
- 이미지 높이가 2501~3000픽셀 사이인 경우 크기를 50%로 조정하세요.
- 이미지 높이가 3000픽셀보다 크면 크기를 30%로 조정하세요.
- 새 이미지가 이전 이미지를 대체합니다.
일반적으로 정보를 하나씩 살펴보고 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" 명령의 결과를 기반으로 하는 루프를 사용하면 하나 이상의 폴더에 대해 이 작업을 반복할 수 있습니다.
답변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