개발지식

imageMagick 을 활용한 이미지 확장자 및 사이즈 변환

devLog by Ronnie's 2023. 1. 13. 22:21

imageMagick은 쉽게 말해 터미널용 포토샵이라고 할 수 있다. imageMagick을 사용하게 된 이유는 썸네일 이미지의 resize와 확장자 변환 작업 후 S3에 업로드 도중 gif 이미지 확장자 변환 시 문제가 생겨 이용하게 되었고, 해당 과정에서 imageMagick의 사용법을 정리한다.

 

 

imageMagick 을 활용한 이미지 확장자 및 사이즈 변환

 

imageMagick 사용 이전에 Thumbnailator 라는 오픈소스 라이브러리를 사용하고 있었는데 gif 이미지를 변환 시키니 gif 파일 특성인 움짤 기능이 사라지고 변환시킬때의 프레임 화면으로만 확장자 및 사이즈가 변경되어 있어 해결법을 찾다 보니 imageMagick을 알게 되어 활용하게 되어 있다.

 

먼저 imageMagick 설치 방법 (Mac)에 대해서 알아본다.

 

설치 방법


imageMagick 설치는 brew를 이용해 쉽게 설치가 가능하다. 

brew install imageMagick

설치량이 많아서 조금 기다려야 한다.

설치가 완료되었다면 다음의 명령어를 통해 변환이 가능하다.

 

확장자만 변환하고 싶은 경우

- convert [변환 대상 이미지] [변환 하고자 하는 확장자의 이미지]

- convert in_image.jpg out_image.webp

 

사이즈까지 같이 변환하고 싶은 경우

- 이때는 resize 명령어를 같이 사용하면 된다.

 

- 크기 지정은 다음과 같이 가능하며

- convert in_image.jpg -resize 100x100 out_image.webp

 

- 비율로도 지정이 가능하다.

- convert in_image.jpg -resize 50% out_image.webp -> 크기 1/2

- convert in_image.jpg -resize 25% out_image.webp -> 크기 1/4

 

그럼 코드상에서 해당 명령어(- convert in_image.jpg -resize 50% out_image.webp -> 크기 1/2)를 통해 이미지 변환을 하고자 할때는 다음과 같이 사용하면 된다.

val runtime = Runtime.getRuntime()
runtime.exec(String.format("%s %s -resize 50%% %s","convert",{변환하고자 하는 파일경로}, {변환 후 파일경로 및 파일명과 확장자 설정})).waitFor()

다음과 같이 Runtime 클래스를 통해 파일 변환 명령어를 실행할 수 있으며 여기에서 waitFor() 메서드를 호출하면 프로세스가 종료될 때까지 블록이 생겨 파일 변환을 끝마칠때까지 대기 후 이후 코드를 실행해 나갈 수 있다.

 

 

해당 예시의 경우는 구글에서 만든 이미지 파일 포맷인 webP로 변환 후 S3 버킷에 업로드한 예시이다. webP 에 대해서 간단히 소개하면 웹사이트의 페이지를 보다 빠르게 읽을 수 있도록 개발된 이미지 확장자이다. 왜 그런지는 아래 변환된 파일의 용량을 보면 알 수 있다.

해당 이미지의 경우 png인 파일이었는데 webp로 변경하니 이미지 용량이 많이 줄어든 모습을 확인할 수 있다.

이렇게 imageMagick을 통해 파일을 변환하는 방법에 대해서 알아보았다.

 

 

참고


https://jh-make.tistory.com/entry/ImageMagick-%EA%B8%B0%EC%B4%88

 

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

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

jh-make.tistory.com

https://imagemagick.org/index.php

 

ImageMagick

Create, Edit, Compose, or Convert Digital Images

imagemagick.org