WhatsApp Photo Print & Alignment Tool

व्हाट्सएप पर मिले टेढ़े-मेढ़े (crooked/skewed) फोटो को 4 कोनों से ड्रैग करके सीधा करें, बैकग्राउंड बदलें और A4 या 4x6 शीट पर एक क्लिक में प्रिंट करें।

Drag & Drop Image Here

Or browse files from your computer. You can also press Ctrl + V to paste directly copied photos from WhatsApp Web!

Rotate & Flip (घुमाएं और पलटें)

Fine Rotation (बारीक घुमाव)

0°

Crop Target Size (टारगेट साइज)

35x45 mm
India Passport
20x25 mm
Stamp Size
2x2 inch
USA Visa
Free / Custom
`); printWindow.document.close(); } function downloadPrintSheet() { const canvas = document.getElementById('printLayoutCanvas'); const link = document.createElement('a'); link.download = 'whatsapp-print-sheet-' + Date.now() + '.png'; link.href = canvas.toDataURL('image/png'); link.click(); showToast('Print layout sheet downloaded!', 'success'); } // ================= GENERAL UI TAB SWITCHERS ================= function switchViewTab(tab, syncControl = true) { currentViewTab = tab; // Update tabs layout classes ['align', 'output', 'sheet'].forEach(t => { const btn = document.getElementById(`viewTab${t.charAt(0).toUpperCase() + t.slice(1)}`); const view = document.getElementById(`viewport${t.charAt(0).toUpperCase() + t.slice(1)}`); if (t === tab) { btn.className = "flex-1 py-2.5 text-center text-sm font-semibold rounded-lg transition duration-200 bg-indigo-600 text-white shadow-md"; view.classList.remove('hidden'); } else { btn.className = "flex-1 py-2.5 text-center text-sm font-semibold rounded-lg transition duration-200 text-slate-400 hover:text-slate-200"; view.classList.add('hidden'); } }); // Adjust overlay if (tab === 'align') { setTimeout(resizeOverlayCanvas, 50); } // Show/Hide Next Stage button based on active tab const nextBtn = document.getElementById('btnProceedToWarp'); if (nextBtn) { if (tab === 'output' && rawImage) { nextBtn.classList.remove('hidden'); } else { nextBtn.classList.add('hidden'); } } // Synchronize control tab if (syncControl) { if (tab === 'align') { switchControlTab('align', false); } else if (tab === 'output') { switchControlTab('adjust', false); } else if (tab === 'sheet') { switchControlTab('layout', false); } } } function switchControlTab(tab, syncView = true) { currentControlTab = tab; // Update tabs layout classes ['align', 'adjust', 'layout'].forEach(t => { const btn = document.getElementById(`tabBtn${t.charAt(0).toUpperCase() + t.slice(1)}`); const panel = document.getElementById(`controlTab${t.charAt(0).toUpperCase() + t.slice(1)}`); if (t === tab) { btn.className = "flex-1 py-3 text-center text-xs font-bold border-b-2 border-indigo-600 text-indigo-400 uppercase tracking-wider"; panel.classList.remove('hidden'); } else { btn.className = "flex-1 py-3 text-center text-xs font-bold border-b-2 border-transparent text-slate-400 hover:text-slate-200 uppercase tracking-wider"; panel.classList.add('hidden'); } }); // Synchronize view tab if (syncView) { if (tab === 'align') { switchViewTab('align', false); } else if (tab === 'adjust') { switchViewTab('output', false); } else if (tab === 'layout') { switchViewTab('sheet', false); } } } function resetTool() { if (confirm('Are you sure you want to reset all progress?')) { location.reload(); } }