JPG PNG 변환기
홈
더 많은 도구
English
中文
日本語
Deutsch
Français
Español
Português
العربية
const img = new Image(); img.onload = () => resolve({ img, file, src: e.target.result }); img.src = e.target.result; }; reader.readAsDataURL(file); }); } function displayPreviews(images) { previewGrid.innerHTML = images.map(({ img, file, src }) => `
${file.name}
${img.width} × ${img.height}px
`).join(''); } function convertImages() { state.convertedImages = []; let processed = 0; state.uploadedFiles.forEach((file, i) => { loadImage(file).then(({ img }) => { const canvas = document.createElement('canvas'); canvas.width = img.width; canvas.height = img.height; const ctx = canvas.getContext('2d'); ctx.drawImage(img, 0, 0); canvas.toBlob(blob => { const url = URL.createObjectURL(blob); state.convertedImages[i] = { url, name: file.name.replace(/\.(jpg|jpeg)$/i, '.png'), size: blob.size }; if (++processed === state.uploadedFiles.length) displayDownloads(); }, 'image/png'); }); }); } function displayDownloads() { processingArea.style.display = 'none'; downloadSection.style.display = 'block'; downloadGrid.innerHTML = state.convertedImages.map((img, i) => `
${img.name}
${(img.size / 1024).toFixed(1)} KB
Download
`).join(''); } window.downloadOne = function(i) { const a = document.createElement('a'); a.href = state.convertedImages[i].url; a.download = state.convertedImages[i].name; a.click(); }; function downloadAll() { state.convertedImages.forEach((img, i) => setTimeout(() => window.downloadOne(i), i * 500)); } function reset() { state.uploadedFiles = []; state.convertedImages = []; fileInput.value = ''; processingArea.style.display = 'none'; downloadSection.style.display = 'none'; uploadArea.style.display = 'block'; }