"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
- PNG 이미지를 PNM 형식으로 변환
- 이미지 크기는 PNM 이미지의 두 번째 행에 저장됩니다. 인쇄 높이의 절반(두 번째 필드 $2/2)을 정수로 사용
awk
하고 해당 값을 변수에 저장합니다halfheight
. - 상단에서 높이를 절반으로 자르고 상단 흰색 테두리를 사용하여 동일한 수의 픽셀로 결과를 채운 다음 출력을 다시 PNG 형식으로 변환합니다.
- 임시 파일을 정리합니다.
좀 더 "수줍은" 방식으로 높이를 계산하려면 이미지 크기를 배열에 저장한 다음 값을 계산할 수 있습니다.
dim=($(head -n2 image.pnm | tail -n1))
halfheight=$((${dim[1]} / 2))
링크:
- Netpbm 문서
- Netpbm 프로그램 디렉토리(모든 프로그램 목록)
답변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
흰색 배경에서 범위를 볼 수 있도록 인위적으로 검은색 테두리를 추가했습니다.