'; resultArea.innerHTML = '
' + preview + '
'; resultArea.classList.add('show'); // re-bind IDs document.getElementById('result-content').textContent = b64; document.getElementById('result-meta').textContent = resultMeta.textContent; btnMain.disabled = false; btnMain.textContent = '处理'; }; reader.onerror = function() { showError('文件读取失败'); btnMain.disabled = false; btnMain.textContent = '处理'; }; reader.readAsDataURL(file); } else { if (!textInput) { showError('请输入 Base64 数据'); btnMain.disabled = false; btnMain.textContent = '处理'; return; } var mime = 'image/png'; var data = textInput.replace(/^data:image\/[a-z]+;base64,/, ''); var match = textInput.match(/^data:(image\/[a-z]+);base64,/); if (match) mime = match[1]; try { var bin = atob(data); var bytes = new Uint8Array(bin.length); for (var i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i); var blob = new Blob([bytes], {type: mime}); var url = URL.createObjectURL(blob); resultContent.textContent = '已生成图片 (下方预览)'; resultMeta.textContent = 'Base64 → 图片: ' + mime + ', ' + bytes.length + ' 字节'; var preview = '
图片预览
下载图片
'; resultArea.innerHTML = '
' + preview + '
'; resultArea.classList.add('show'); } catch(err) { showError('Base64 解码失败: ' + err.message); } btnMain.disabled = false; btnMain.textContent = '处理'; } }); btnClear.addEventListener('click', function() { document.getElementById('file').value = ''; document.getElementById('text').value = ''; document.getElementById('mode').value = 'img2base64'; // Reset result area resultArea.innerHTML = '
'; resultContent = document.getElementById('result-content'); resultMeta = document.getElementById('result-meta'); resultArea.classList.remove('show'); errorMsg.classList.remove('show'); document.querySelectorAll('.form-group-text').forEach(function(el){el.style.display='';}); document.querySelectorAll('.form-group-file').forEach(function(el){el.style.display='';}); }); // Toggle text/file fields function syncFields() { var mode = document.getElementById('mode').value; var txtGroup = document.querySelector('.form-group-text'); var fileGroup = document.querySelector('.form-group-file'); if (mode === 'img2base64') { txtGroup.style.display = 'none'; fileGroup.style.display = ''; } else { txtGroup.style.display = ''; fileGroup.style.display = 'none'; } } document.getElementById('mode').addEventListener('change', syncFields); syncFields(); })();