Zum Hauptinhalt springen
claw
am
tools
Werkzeuge
Dokumente
Daoark
EN
Startseite
Startseite
/
Bildwerkzeuge
›
]*\bwidth=["']([0-9.]+)/i); var hMatch = svgText.match(/
]*\bheight=["']([0-9.]+)/i); var vbMatch = svgText.match(/
]*\bviewBox=["']([^"']+)/i); var w = wMatch ? parseFloat(wMatch[1]) : (vbMatch ? parseFloat(vbMatch[1].split(/[\s,]+/)[2]) : 300); var h = hMatch ? parseFloat(hMatch[1]) : (vbMatch ? parseFloat(vbMatch[1].split(/[\s,]+/)[3]) : 300); var outW = parseInt(document.getElementById('width').value) || 0; if (outW > 0) { var ratio = h / w; w = outW; h = Math.round(outW * ratio); } var bg = document.getElementById('bgColor').value.trim(); var blob = new Blob([svgText], { type: 'image/svg+xml;charset=utf-8' }); var url = URL.createObjectURL(blob); var img = new Image(); img.onload = function() { var canvas = document.createElement('canvas'); canvas.width = w; canvas.height = h; var ctx = canvas.getContext('2d'); if (bg) { ctx.fillStyle = bg; ctx.fillRect(0, 0, w, h); } ctx.drawImage(img, 0, 0, w, h); URL.revokeObjectURL(url); var dataUrl = canvas.toDataURL('image/png'); var resultContent = document.getElementById('result-content'); var resultMeta = document.getElementById('result-meta'); resultContent.innerHTML = '
下载 PNG (' + w + '×' + h + ')
'; resultMeta.textContent = 'SVG 源尺寸 → PNG ' + w + '×' + h + (bg ? ' (背景: ' + bg + ')' : ' (透明背景)'); resultArea.classList.add('show'); btnMain.disabled = false; btnMain.textContent = orig; }; img.onerror = function() { showError('SVG 解析失败,请检查代码'); URL.revokeObjectURL(url); btnMain.disabled = false; btnMain.textContent = orig; }; img.src = url; }; if (mode === 'text') { proceed(document.getElementById('text').value); } else { var f = document.getElementById('file').files[0]; if (!f) { showError('请选择 .svg 文件'); btnMain.disabled = false; btnMain.textContent = orig; return; } var r = new FileReader(); r.onload = function(ev) { proceed(ev.target.result); }; r.onerror = function() { showError('文件读取失败'); btnMain.disabled = false; btnMain.textContent = orig; }; r.readAsText(f); } }); btnClear.addEventListener('click', function() { form.reset(); modeSel.dispatchEvent(new Event('change')); clearError(); clearResult(); }); })();