본문 바로가기
코딩 공부/Terminal

[맥 터미널 명령어] convert (ImageMagick)

by JH-M 2022. 5. 25.

convert 명령어로 ImageMagick 을 사용할 수 있습니다. ImageMagick 은 쉽게 말하자면 터미널용 포토샵이라고 할 수 있습니다. 맥과 리눅스에서는 convert 명령어로, 윈도우에서는 magick 명령어로 사용합니다.

 

 

설치

brew install imagemagick

터미널 명령어 - brew

 

입력파일 규칙

글로빙

컴퓨터 프로그래밍에서 글로빙(Globbing)은 와일드카드( * ? [abc] )로 여러 파일이름의 집합을 지정한다는 뜻입니다. 아래 명령어에서 *.jpg 는 한개 이상의 jpg 파일 집합을 입력하고 images.gif 파일로 출력해줍니다.

convert *.jpg images.gif

 

텍스트 파일 내용 입력

filenames.txt 파일 준비

image_1.jpg
image_2.jpg
image_3.jpg
image_4.jpg

 

"@ + 파일명" 으로 파일내용을 파일 이름으로 입력할 수 있습니다.

convert @filenames.txt out.gif

 

범위선택 입력

image-1.jpg, image-2.jpg, image-3.jpg... 와 같이 넘버링이 되어있는 파일의 범위를 선택할 수 있습니다.

convert  'image-%d.jpg[1-3]'  -resize 100x100 out.jpg

 

이미지 포맷 변환

# png -> jpg
convert image.png image.jpg
# jpg -> png
convert image.jpg image.png

 

크기변환

큰 사이즈 기준으로 크기변경

# 방법 1
convert image.jpg -resize 50x50 out.jpg

# 방법 2
convert 'image.jpg[50x50]' out.jpg

# 방법 3 (모든 jpg 파일 크기변경)
convert '*.jpg[50x50]' out.jpg

 

작은 사이즈 기준으로 크기변경

convert image.jpg -resize 50x50^ out.jpg

 

이미지 비율을 무시하고 크기변경

convert image.jpg -resize 50x50! out.jpg

 

픽셀 기준으로 크기변경

convert image.jpg -resize 100@ out.jpg

 

비율을 기준으로 크기변경

convert image.jpg -resize 50% out.jpg

 

잘라내기

# 방법 1
convert image.jpg -crop 30x30+50+50 out.jpg

# 방법 2
convert -extract 30x30+50+50 image.jpg out.jpg

# 방법 3
convert 'image.jpg[30x30+50+50]' out.jpg

 

이미지 회전

# 45° 회전
convert image.jpg -rotate 45 out.jpg

# 배경색 투명설정
convert image.jpg -matte -background none -rotate 90  out.png

 

이미지 반전

# 좌우 반전, flop
convert image.jpg -flop out.jpg

# 상하 반전, flip
convert image.jpg -flip out.jpg

 

테두리 제거하기

convert img.jpg -trim out.jpg

 

테두리 추가하기

convert img.jpg -bordercolor orange -border 20 out.jpg

 

색상 조정

# 흑백 이미지 생성
convert image.jpg -colorspace gray out.jpg

# sepia 톤 이미지 생성
convert image.jpg -sepia-tone 80% out.jpg

# 밝은 이미지 생성
convert image.jpg -sigmoidal-contrast 3,0% out.jpg

# 어두운 이미지 생성
convert image.jpg -sigmoidal-contrast 3,100% out.jpg

 

캔버스 이미지 생성

# 800x600 픽셀 흰색 이미지 파일 생성
convert -size 800x600 xc:white image.jpg

# 800x600 픽셀 파란색 이미지 파일 생성
convert -size 800x600 xc:blue image.jpg

# 800x600 픽셀 투명 이미지 파일 생성
convert -size 800x600 xc:none image.png

 

텍스트 이미지 생성

# 사용 가능한 폰트 확인
convert -list font 

# 횐색 배경색, 검정 전경색 텍스트 이미지파일 생성
convert -background white -fill black \
		-font "/Users/JH/Library/Fonts/TmoneyRoundWindRegular.otf" \
		-pointsize 24 label:"Hello\n안녕 하세요" out.png

 

GIF 애니메이션 만들기

convert -delay 10 -loop 0 img_*.jpg  anim.gif

-delay 10 : 0.1초 간격

-loop 0 : 무한 반복

 

프레임 추출

'images.gif[0]' 와 같이 프레임 번호를 입력하면 해당 프레임 이미지를 추출해낼 수 있습니다.

# 0 번 프레임 추출
convert 'images.gif[0]' image.png
# 0, 1, 2, 3 번 프레임 추출
convert 'images.gif[0-3]' image.png
# 2, 3, 4 번 프레임 추출
convert 'images.gif[2,3,4]' image.png

 

PDF 파일 만들기

# 모든 jpg 
convert "*.jpg" file.pdf

# jpg, jpeg, png 모두 포함
convert "*.{jpg,jpeg,png}" file.pdf

 

PDF 파일 이미지 추출하기

# 모든 페이지 추출
convert file.pdf img_%d.jpg

# 3번째 페이지 추출
convert "file.pdf[2]" img.jpg

# 3~5 페이지 추출
convert "file.pdf[3-5]" img.jpg

 

기본제공 이미지와 패턴

빌트인 이미지로 granite, logo, netscape, rose, wizard 를 사용할 수 있습니다. 아래 명령과 같이 logo: 와 같은 형식으로 이미지 파일을 입력합니다.

convert logo: out.png

 

빌트인 패턴으로 checkerboard, bricks, circles, crosshatch 등을 사용할 수 있습니다. 아래 명령과 같이 pattern:checkboard 와 같은 형식으로 패턴을 입력합니다. 

# 기본 패턴 출력
convert pattern:checkerboard checkerboard.png
# 패턴 크기 정의
convert -size 640x480 pattern:checkerboard checkerboard.png

🔗 기본 이미지와 패턴 더 알아보기

 

ICO 아이콘 파일 만들기

icon.ico 파일

# 필요한 크기 아이콘 생성
convert icon_origin.png -resize 16x16   -depth 32 icon_16.png
convert icon_origin.png -resize 32x32   -depth 32 icon_32.png
convert icon_origin.png -resize 48x48   -depth 32 icon_48.png
convert icon_origin.png -resize 64x64   -depth 32 icon_64.png
convert icon_origin.png -resize 128x128 -depth 32 icon_128.png
convert icon_origin.png -resize 256x256 -depth 32 icon_256.png
convert icon_origin.png -resize 512x512 -depth 32 icon_512.png

# ico 아이콘 파일 생성
convert icon_*.png icon.ico

 

이미지 비교

convert dot.png dot2.png -compare out.png

 

두 이미지 반반 합치기

convert earth.jpg moon.jpg -crop 2x1@ -delete 1,2 +append left-right.jpg

 

convert earth.jpg moon.jpg -crop 1x2@ -delete 1,2 -append top-bottom.jpg

 

crop 2x1@ 가로 2분할이고 crop 1x2@ 는 세로 2분할입니다. crop 결과로 earth.jpg → 0, 1  moon.jpg → 2, 3  총 4개의 이미지가 생성되는데 이중 1, 2를 제거(delete)하고 남은 0과 3 이미지를 append 해서 결과 이미지를 생성합니다. +append 는 수평, -append 는 수직으로 이미지를 합쳐줍니다.

 


참고

🔗 https://imagemagick.org/

🔗 https://github.com/ImageMagick/ImageMagick/discussions

댓글