
폴더에 여러 개의 이미지가 있습니다.
images/image1.jpg
images/image2.jpg
...
해당 이미지는 웹에 최적화되어 있지 않습니다.
단 한 단계로 해당 이미지를 대량으로 최적화할 수 있는 Linux 명령이 있는지 궁금합니다.
업데이트: 각 이미지에 대해 두 가지 작업을 수행해야 합니다.
이미지의 너비가 900px보다 높으면 너비를 900px로 줄입니다(비율 유지).
원본의 70% 정도 낮은 품질로 파일을 저장해 보세요.
답변1
설치하다이미지매직:
sudo apt-get install imagemagick
그리고 convert
다음과 같이 명령을 사용하십시오.
mkdir new
for file in images/*jpg
do convert -quality 70% -resize '>900x' "$file" new/$(basename "$file")
done
답변2
파일이 너무 많고 이 작업을 빠르게 완료하려면 병렬 프로그램을 사용할 수도 있습니다.
sudo apt install imagemagick parallel
그리고 다음은 다음과 같습니다.
find . \( -name '*.jp*g' -o -name '*.png' \) -a ! -name '*.min.*' -type f -print0 | \
parallel -0 'convert {} -resize '>900x' -quality '70%' \
-set filename:newname "%d/%[basename].min.%[extension]" "%[filename:newname]"'
이를 살펴보겠습니다.
find
-- 파일을 찾아보세요.
-- 현재 디렉토리에\( -name '*.jp*g' -o -name '*.png' \)
-- png 또는 jpeg입니다("jpg"와 "jpeg"는 모두 일반적인 확장자입니다!).-a ! -name '*.min.*'
-- 이미 최소화된 파일은 건너뜁니다.-type f
-- 심볼릭 링크나 이상한 이름의 디렉토리가 아닌 실제 파일입니다.-print0
-- 이 파일을 널 바이트로 구분하여 인쇄합니다(공백으로 인해 문제가 발생하지 않도록).
parallel
-- 이전 명령을 읽고 각 요소에 대해 이 명령을 병렬로 실행합니다.-0
-- 각 요소는 널 바이트로 구분됩니다.convert {}
-- 파일 이름을 대체하여 imagemagick "convert" 프로그램을 호출합니다.{}
resize '>900x' -quality '70%'
-- 이미지 크기를 x축에서 최대 900px로 조정하고 jpeg 품질을 70%로 변경합니다.있다많은여기에 가능한 다른 옵션이 있습니다.-set filename:newname "%d/%[basename].min.%[extension]"
-- 새 파일 이름으로 변수를 만듭니다.모든 유효한 값은 문서를 참조하세요..%d
-- 파일이 있는 디렉토리%[basename]
-- 확장자가 없는 파일 이름%[extension]
-- 파일의 원래 확장자
"%[filename:newname]"
-- 이전 단계에서 설정한 출력 파일 이름