bash 스크립트를 사용하여 이미지 내용을 수정하는 방법은 무엇입니까?

bash 스크립트를 사용하여 이미지 내용을 수정하는 방법은 무엇입니까?

"image.png" 파일의 위쪽 절반을 흰색 픽셀로 덮고 싶다고 가정해 보겠습니다. Bash 스크립트를 사용하여 이 작업을 수행할 수 있나요?

답변1

도구를 사용하세요 netpbm. 패키지 관리자를 통해 설치할 수 있어야 합니다.

pngtopnm image.png > image.pnm
halfheight=$(awk 'NR==2 { printf "%d", $2/2 }' image.pnm)
pnmcut -top "$halfheight" image.pnm | pnmpad -white -top "$halfheight" | pnmtopng > out.png
rm image.pnm
  1. PNG 이미지를 PNM 형식으로 변환
  2. 이미지 크기는 PNM 이미지의 두 번째 행에 저장됩니다. 인쇄 높이의 절반(두 번째 필드 $2/2)을 정수로 사용 awk하고 해당 값을 변수에 저장합니다 halfheight.
  3. 상단에서 높이를 절반으로 자르고 상단 흰색 테두리를 사용하여 동일한 수의 픽셀로 결과를 채운 다음 출력을 다시 PNG 형식으로 변환합니다.
  4. 임시 파일을 정리합니다.

좀 더 "수줍은" 방식으로 높이를 계산하려면 이미지 크기를 배열에 저장한 다음 값을 계산할 수 있습니다.

dim=($(head -n2 image.pnm | tail -n1))
halfheight=$((${dim[1]} / 2)) 

링크:

답변2

imagemagick의 그리기 명령을 사용하여 이 작업을 수행할 수 있습니다.

https://imagemagick.org/script/command-line-options.php#draw

예:

w=$(identify -format %w input.png)
h=$(identify -format %h input.png)
convert -draw "rectangle 0,0 ${w},$((h/2))" -fill white input.png output.png

답변3

위쪽 절반이 아래쪽과 쉽게 구별되는 시작 이미지를 만듭니다.

magick -size 640x480 gradient:red-blue image.png

여기에 이미지 설명을 입력하세요.

최신 ImageMagick 버전

magick image.png -region "x50%" -fill white -colorize 100% result.png

또는

magick image.png -region "640x%[fx:h/2]" -fill white -colorize 100% result.png

아래와 같은 결과입니다.

이전 ImageMagick 버전

이제 다음을 수행합니다.

  • 위, 아래 두 부분으로 나누어져 있어요
  • 윗부분은 버리고 아랫부분은 남겨두세요
  • 밑부분을 복제하고 흰색으로 100% 채워주세요
  • 흰색 절반을 아래쪽 절반 앞에 놓습니다.
  • 흰색 아래에 원래 아래쪽 절반을 추가합니다.

magick image.png -crop x2@ -delete 0 \( +clone -fill white -colorize 100% \) +swap -append result.png

흰색 배경에서 범위를 볼 수 있도록 인위적으로 검은색 테두리를 추가했습니다.

여기에 이미지 설명을 입력하세요.

관련 정보