벡터 vs 래스터

Vector vs. raster

수식으로 그려 확대해도 매끈한 벡터와, 고정된 픽셀 격자라 확대하면 깨지는 래스터 — 로고는 왜 항상 벡터로 보관해야 하는지 보여줍니다.

다른 이름: Vector graphics vs bitmapSVG vs raster
···
html
<div class="cmp">
  <div class="pane">
    <svg viewBox="0 0 40 40"><polygon points="20,4 36,32 4,32" fill="var(--accent)"/></svg>
    <span>SVG</span>
  </div>
  <div class="pane">
    <canvas id="ras" width="10" height="10"></canvas>
    <span>PNG 10×10</span>
  </div>
</div>
css
.cmp{display:flex;gap:6%;width:min(92%,320px)}
.pane{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px}
.pane svg,.pane canvas{width:62%;aspect-ratio:1;animation:zoom 4s ease-in-out infinite}
#ras{image-rendering:pixelated}
.pane span{font-size:10px;letter-spacing:.05em;color:var(--muted)}
@keyframes zoom{0%,100%{transform:scale(1)}50%{transform:scale(2.3)}}
js
const c = document.getElementById('ras');
const ctx = c.getContext('2d');
const accent = getComputedStyle(document.documentElement).getPropertyValue('--accent').trim();
ctx.fillStyle = accent || '#5b5bf7';
ctx.beginPath();
ctx.moveTo(5, 1);
ctx.lineTo(9, 8);
ctx.lineTo(1, 8);
ctx.closePath();
ctx.fill();

벡터 그래픽은 점과 곡선의 좌표를 수식으로 저장합니다. 그래서 아무리 확대해도 다시 계산해서 그리기 때문에 윤곽선이 항상 매끈합니다. 래스터(비트맵) 이미지는 반대로 고정된 개수의 픽셀 격자에 색을 채워둔 것이라, 원본보다 크게 확대하면 각 픽셀이 그대로 늘어나 계단 현상이 나타납니다.

로고를 항상 벡터(SVG, AI, EPS)로 원본을 보관해야 하는 이유가 여기 있습니다. 명함처럼 작은 인쇄물에도, 건물 외벽 현수막처럼 거대한 크기에도 같은 파일 하나로 대응할 수 있기 때문입니다. 반면 사진처럼 색과 질감이 복잡한 이미지는 벡터로 표현하기 사실상 불가능해 래스터(JPG, PNG)로 다룹니다.

실무에서 흔한 사고는 누군가 로고를 웹에서 PNG로 다운받아 원본인 줄 알고 재사용하는 경우입니다. 그 PNG를 다시 확대하면 처음부터 벡터로 시작했을 때는 절대 나지 않을 흐림과 깨짐이 생깁니다. 그래서 로고를 넘길 때는 항상 원본 벡터 파일의 출처를 함께 명시해야 합니다.

언제 쓰나

로고·아이콘처럼 다양한 크기로 다시 쓰일 자산은 항상 벡터로 원본을 보관하세요. 사진처럼 색·질감이 복잡한 이미지는 래스터가 맞습니다.