• 목록
  • 아래로
  • 위로
  • 0
  • 제르엘
  • 조회 수 801

일부 GIF 파일을 ImageMagick을 이용해 처리하는 경우 아래와 같이 이미지가 깨질 수 있습니다.

 

01.gif

10eb2758046253a3ffecc031199907b8.gif

이랬던 이미지가 이런 식으로

이미지 출처 - https://cafe.naver.com/mahjongsoul/11365, 캐릭터 - 이치히메

 

이런 문제가 발생하는 이유는 ImageMagick의 버전이나 실행 환경 때문이 아니라, 모종의 방법으로 최적화된 GIF 이미지를 ImageMagick에서 처리하는 과정에서 오류가 발생하기 때문입니다. 이 문제를 해결하는 방법은 간단합니다. 아래와 같이 이미지를 ImageMagick으로 돌리기 전 먼저 -coalesce 옵션을 줘서 한 번 처리해 주면 됩니다.

 

ImageMagick 6:

convert <input_file>.gif -coalesce <output_file>.gif

ImageMagick 7:

magick <input_file>.gif -coalesce <output_file>.gif

 

예를 들어, 아래 명령어는 ImageMagick 6 환경에서 이미지를 먼저 -coalesce 옵션으로 처리한 후, 투명도를 비활성화한 뒤 흰색 배경을 추가하는 명령어입니다.

 

ImageMagick 6:

convert <input_file>.gif -coalesce <coalesce_file>.gif
convert <coalesce_file>.gif -background white -alpha_remove <output_file>.gif

ImageMagick 7:

magick <input_file>.gif -coalesce <coalesce_file>.gif
magick <coalesce_file>.gif -fill white -opaque transparent <output_file>.gif

 

이 방법의 단점이라면 처리된 파일의 용량이 원본 대비 증가할 수 있다는 건데, 저렇게 깨지는 이미지를 보여주느니 차라리 저장공간을 좀 희생하는 게 낫지 않겠습니까.

작성자
제르엘 119 Lv. (0%) 1234150/115200000EXP

mochasyrup_G.jpg  XER.jpg 

아마도 야옹시티 벌레타입 짐-리더

사용 포켓몬: 매시붕, 페로코체, 비퀸, 레디안, 도나리, 메가자리

객원 멤버: 라란티스, 아리아도스

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 6 마스터 마스터 23.01.14.02:23 78245
일부 GIF 파일을 ImageMagick으로 처리 시 이미지가 깨지는 경우 해결법 image 제르엘 제르엘 25.05.18.02:25 801
559 [Python] installing Geopandas in Windows (Trouble shooting) 1 이니스프리 이니스프리 24.10.25.20:10 559
558 [Nextcloud] 프로세스가 kill 되는 문제에 관한 Troubleshooting 3 이니스프리 이니스프리 24.09.30.19:53 796
557 [펌] Contabo VPS 관련 최근 정보글 image 이니스프리 이니스프리 24.09.29.21:11 424
556 [Python] PDF 파일을 특정 페이지를 기준으로 두 개로 나누기 이니스프리 이니스프리 24.08.11.20:27 984
555 [Python] Youtube API를 사용하지 않고 특정 채널의 모든 비디오 URL을 가져오기 이니스프리 이니스프리 24.06.09.22:12 756
554 HDMI 단자의 QHD 출력을 정식으로 지원하지 않는 NVIDIA 그래픽 카드로 QHD 60 Hz 해상도 출력하기 2 image 제르엘 제르엘 24.06.09.17:45 1271
553 [Python] cannot import name 'TypeAliasType' from 'typing_extensions' 에러 대응방법 이니스프리 이니스프리 24.06.01.23:54 509
552 [VSCode] 1개의 OS에 VSCode 여러 개를 설치 및 구동하기 이니스프리 이니스프리 24.05.26.05:09 534
551 [Python] 리스트에 중복된 원소가 있는지 확인하는 함수 이니스프리 이니스프리 24.05.22.20:21 645
550 [Python] random 함수가 계속하여 동일한 결과를 출력할 때 해결방법 이니스프리 이니스프리 24.05.15.19:32 941
549 트래픽 절감 관련 모 커뮤니티 사이트의 회의 결과 이니스프리 이니스프리 24.05.15.16:51 812
548 [Python] SSL: CERTIFICATE_VERIFY_FAILED에 대한 대처 방법 (2) 이니스프리 이니스프리 24.05.05.21:04 797
547 [KT] 오피스넷 가정 설치 관련 이니스프리 이니스프리 24.05.05.00:28 733
546 [Python] 쿠팡 크롤링할 때 소소한 팁 이니스프리 이니스프리 24.05.02.21:50 640
545 [Python] dictionary 2개의 평균을 구하여 내림차순 정렬하기 이니스프리 이니스프리 24.04.21.17:29 647
544 [Python] 독일어, 스페인어, 체코어 등 철자를 영문 알파벳으로 전환하기 이니스프리 이니스프리 24.04.21.17:15 587
543 [Python] Tabulate 모듈로 작성한 테이블을 파일로 저장할 때 에러가 발생하는 경우 이니스프리 이니스프리 24.04.20.23:45 451
542 [Python] 변수의 이름을 반환하는 함수 이니스프리 이니스프리 24.04.20.23:29 656
541 [Python] Table을 쉽게 만들어주는 모듈x2 이니스프리 이니스프리 24.04.18.22:04 338