SVG to PNG 변환기 - SVG를 PNG/JPEG로 변환 온라인
SVG 파일이나 코드를 고품질 PNG/JPEG 이미지로 변환하세요. 크기, 배율, 배경색을 자유롭게 설정할 수 있습니다. 100% 클라이언트 사이드 처리, 업로드 불필요.
자주 묻는 질문
SVG to PNG 변환기란 무엇이며 왜 필요한가요?
SVG to PNG 변환기는 XML 기반 벡터 이미지인 SVG(Scalable Vector Graphics) 파일을 픽셀로 구성된 PNG(Portable Network Graphics) 래스터 이미지로 변환합니다. SVG는 확장성과 작은 파일 크기로 웹에 이상적이지만, 많은 플랫폼과 애플리케이션에서는 래스터 이미지가 필요합니다: SVG를 렌더링하지 않는 이메일 클라이언트, PNG/JPEG만 허용하는 소셜 미디어 플랫폼, 프레젠테이션 소프트웨어, PDF 생성기, 게임 엔진, SVG를 지원하지 않는 레거시 애플리케이션 등이 있습니다.
이 SVG to PNG 변환기는 어떻게 사용하나요?
SVG를 입력하는 두 가지 방법이 있습니다: (1) SVG 파일을 업로드 영역에 드래그 앤 드롭하거나 클릭하여 파일을 탐색합니다. (2) 텍스트 영역에 SVG 코드를 직접 붙여넣기합니다. SVG가 로드되면 도구가 자동으로 크기를 감지하고 미리보기를 표시합니다. 설정 패널에서 배율(1x, 2x, 3x, 4x)을 선택하거나 사용자 지정 크기를 입력하고, 배경색(투명, 흰색 또는 사용자 지정)을 선택하고, 출력 형식(PNG 또는 JPEG)을 선택합니다. 다운로드를 클릭하여 이미지 파일을 저장합니다.
SVG 데이터는 안전한가요? 파일이 서버에 업로드되나요?
SVG 데이터는 100% 안전하며 브라우저를 떠나지 않습니다. 모든 변환은 브라우저에 내장된 HTML5 Canvas API를 사용하여 클라이언트 측에서 수행됩니다. SVG 데이터는 어떤 서버로도 전송되지 않으며, 파일이 어디에도 저장되지 않고, 추적도 발생하지 않습니다. 이는 독점 디자인, 기밀 아이콘, 브랜드 자산 또는 민감한 SVG 콘텐츠에 안전합니다.
PNG와 JPEG 출력의 차이점은 무엇인가요?
PNG는 완전한 투명도(알파 채널), 무손실 압축을 지원하며 아이콘, 로고, UI 요소 및 선명한 가장자리나 텍스트가 있는 이미지에 이상적입니다. JPEG는 손실 압축을 사용하여 더 작은 파일 크기를 달성하지만 투명도를 지원하지 않습니다 — 투명 영역은 선택한 배경색으로 채워집니다. 투명도나 완벽한 품질이 필요할 때는 PNG를, 더 작은 파일 크기가 필요하고 투명도가 필요 없을 때는 JPEG를 사용하세요.
배율(1x, 2x, 3x, 4x)은 무엇을 의미하나요?
배율은 SVG의 고유 크기(width/height 속성 또는 viewBox로 정의)에 곱하여 출력 픽셀 크기를 생성합니다. 예를 들어, SVG의 viewBox가 '0 0 24 24'(24x24 논리적 픽셀)인 경우: 1x는 24x24 PNG, 2x는 48x48 PNG, 3x는 72x72 PNG, 4x는 96x96 PNG를 생성합니다. 이는 모바일 및 웹 개발의 표준 관행입니다: 1x는 표준 디스플레이, 2x는 레티나/HiDPI 디스플레이, 3x는 초고밀도 디스플레이용입니다.
투명 배경으로 SVG를 변환할 수 있나요?
네. PNG 형식은 투명도(알파 채널)를 완전히 지원합니다. 배경색으로 투명(기본값)을 선택하면 SVG의 모든 투명 영역이 PNG 출력에 보존됩니다. 미리보기에서는 체크무늬 패턴으로 투명 영역을 시각화합니다. JPEG 형식은 투명도를 지원하지 않으므로, JPEG 출력을 선택하면 투명 영역이 선택한 배경색(기본값 흰색)으로 채워집니다.
변환된 PNG가 흐릿하거나 픽셀화되어 보이는 이유는?
출력이 흐릿하게 보인다면, 출력 크기가 SVG의 세부 수준에 비해 너무 작을 가능성이 높습니다. 배율을 2x 또는 3x로 높이거나 더 큰 사용자 지정 크기를 입력해 보세요. SVG는 해상도에 독립적인 벡터 그래픽이므로 품질 손실 없이 어떤 크기로든 내보낼 수 있지만, 래스터화된 출력에는 세부 사항을 캡처할 충분한 픽셀이 있어야 합니다.
최대 크기 및 파일 크기 제한은 무엇인가요?
최대 SVG 입력 파일 크기는 10MB입니다. 최대 출력 크기는 8192x8192 픽셀이며, 이는 대부분의 브라우저 Canvas 구현에서 부과하는 실질적인 제한입니다. 대부분의 사용 사례(아이콘, 로고, UI 자산)에서는 512x512~2048x2048의 출력 크기가 충분합니다.
코드 예제
// SVG to PNG conversion using Canvas API (Browser)
function svgToPng(svgString, options = {}) {
const {
width = null,
height = null,
scale = 1,
backgroundColor = null,
format = 'png',
quality = 0.92,
} = options;
return new Promise((resolve, reject) => {
const parser = new DOMParser();
const doc = parser.parseFromString(svgString, 'image/svg+xml');
const svg = doc.documentElement;
let svgWidth = parseFloat(svg.getAttribute('width')) || 0;
let svgHeight = parseFloat(svg.getAttribute('height')) || 0;
if (!svgWidth || !svgHeight) {
const viewBox = svg.getAttribute('viewBox');
if (viewBox) {
const [, , vbW, vbH] = viewBox.split(/[\s,]+/).map(Number);
svgWidth = vbW;
svgHeight = vbH;
}
}
const outWidth = width || svgWidth * scale;
const outHeight = height || svgHeight * scale;
const canvas = document.createElement('canvas');
canvas.width = outWidth;
canvas.height = outHeight;
const ctx = canvas.getContext('2d');
if (backgroundColor) {
ctx.fillStyle = backgroundColor;
ctx.fillRect(0, 0, outWidth, outHeight);
}
const blob = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });
const url = URL.createObjectURL(blob);
const img = new Image();
img.onload = () => {
ctx.drawImage(img, 0, 0, outWidth, outHeight);
URL.revokeObjectURL(url);
canvas.toBlob(
(resultBlob) => {
resolve({
blob: resultBlob,
dataUrl: canvas.toDataURL(
format === 'jpeg' ? 'image/jpeg' : 'image/png', quality
),
width: outWidth,
height: outHeight,
size: resultBlob.size,
});
},
format === 'jpeg' ? 'image/jpeg' : 'image/png',
quality
);
};
img.onerror = () => reject(new Error('Failed to load SVG'));
img.src = url;
});
}
// Usage
const svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" fill="#3b82f6"/></svg>';
svgToPng(svg, { scale: 2 }).then(r => console.log(`${r.width}x${r.height}, ${r.size} bytes`));