사진으로 움짤(GIF) 만들기

사진 여러 장을 올려 순서·속도만 정하면 움직이는 GIF로. 여백/꽉채움/늘림 맞춤 + 실시간 미리보기 + 부메랑(왕복). 인스타·카톡·블로그용.

사진이 외부 서버로 전송되지 않습니다. GIF 인코딩(gifenc)까지 전부 브라우저 안에서만 처리.
[ AdSense 광고 자리 ]

맞춤 방식 — 사진 비율이 섞였을 때

움짤은 한 가지 프레임 크기(첫 사진 기준)로 고정됩니다. 가로·세로 비율이 다른 사진을 한 프레임에 넣을 때 처리 방식이 결과를 좌우합니다.

방식동작잘림찌그러짐이럴 때
여백비율 유지 + 남는 곳 흰 여백없음없음사진 전체를 다 보여야 할 때
꽉 채움비율 유지 + 프레임 채우고 가장자리 잘림있음없음여백 없이 꽉 찬 느낌이 좋을 때
늘림프레임에 맞춰 늘려 채움없음있음모든 사진 비율이 같을 때

미리보기의 노란 ○가 그대로면 비율 유지, 잘리면 꽉 채움, 타원으로 찌그러지면 늘림입니다. 위 미리보기로 바로 비교해 보세요.

관련 도구

GIF는 어떻게 만들어지나요? (gifenc·256색)
이 도구는 gifenc(MIT 라이선스)라는 가벼운 GIF 인코더를 사용합니다. 각 사진을 캔버스에 그린 뒤 픽셀을 읽어, ① quantize로 그 프레임에 가장 잘 맞는 256색 팔레트를 만들고 ② applyPalette로 픽셀을 팔레트 인덱스로 바꿔 한 프레임씩 GIF에 씁니다. GIF89a 사양상 프레임당 색은 최대 256색이므로, 색이 풍부한 사진은 약간 단순해질 수 있습니다.
왜 색이 풍부한 사진은 GIF에서 거칠어지나요?
GIF는 트루컬러(1,670만 색)가 아니라 팔레트 기반(최대 256색) 포맷입니다. 하늘·노을·피부톤처럼 색이 미세하게 변하는 영역은 256색으로 근사하면서 띠(밴딩)나 점(디더링)이 보일 수 있습니다. 색 표현이 중요하면 GIF 대신 동영상(MP4)이 적합하고, 단순한 색·로고·짧은 모션에는 GIF가 가볍고 어디서나 재생되는 장점이 있습니다.
프레임이 많거나 큰 사진이면 느린가요?
인코딩은 브라우저 안에서 한 프레임씩 진행되며, 프레임마다 색을 사이로 양보(UI 안 멈춤)하도록 처리했습니다. 다만 장수 × 해상도가 클수록 시간이 걸립니다. '가로 최대'를 640 이하로 두면 용량·속도 모두 유리합니다. 매우 많은 고해상도 사진은 먼저 줄여서 올리는 게 좋습니다.
모바일에서도 되나요?
됩니다(iOS Safari·Android Chrome 모두 캔버스 기반이라 별도 wasm 불필요). 단 메모리 제약상 사진 장수·해상도가 너무 크면 느려질 수 있으니, 모바일에서는 가로 480~640px, 10장 안팎을 권장합니다.

자주 묻는 질문

사진 몇 장부터 움짤이 되나요?
2장 이상이면 됩니다. 장수가 많을수록 부드럽지만 용량도 커집니다. 같은 구도에서 조금씩 다른 장면(연속 촬영)일수록 자연스러운 움짤이 됩니다. 1장만 올리면 미리보기로 프레이밍만 확인할 수 있습니다.
사진마다 비율이 다른데 깨지지 않나요?
맞춤 방식을 고르면 됩니다. '여백'은 비율 그대로 전체를 보이게 하고 남는 곳을 흰 여백으로(안 잘림·안 찌그러짐), '꽉 채움'은 채우되 가장자리만 잘라냄(비율 유지), '늘림'은 프레임에 맞춰 늘려 채움(비율 무시)입니다. 비율이 섞였으면 보통 '여백'이나 '꽉 채움'이 자연스럽습니다.
왜 GIF로 만들면 색이 단순해 보이나요?
GIF는 프레임당 최대 256색만 쓸 수 있어서입니다. 각 프레임을 256색 팔레트로 양자화하므로 그라데이션이 많은 사진은 약간 단순해질 수 있습니다. 색 표현이 중요하면 동영상(MP4)이 적합합니다.
부메랑(왕복)은 무엇인가요?
1→2→3→2→1 순서로 앞뒤를 오가며 재생합니다. 끝과 시작이 자연스럽게 이어져 끊김 없이 반복되는 느낌을 줍니다. 짧은 반복 움짤에 잘 맞습니다.
만든 GIF가 너무 크면 어떻게 하나요?
장수·해상도(가로 최대)를 줄이면 작아집니다. 이미 만든 GIF의 용량만 더 줄이고 싶으면 GIF 압축 도구로 색상수·lossy를 조정하세요.

참고

최종 검증: 2026-06-28 / gifenc 1.0.3 (MIT) 기반.
⚠️ GIF는 색이 단순화되는 포맷입니다. 원본 사진은 별도로 보관하세요.