Image Compressor
height = maxHeight; } } // Set the canvas dimensions canvas.width = width; canvas.height = height; // Draw the image on the canvas ctx.drawImage(image, 0, 0, width, height); // Get the compressed data from the canvas as a base64-encoded JPEG var compressedData = canvas.toDataURL('image/jpeg', 0.7); // Change the quality as desired (0.7 = 70% quality) return compressedData; } // Function to handle file selection function handleFileSelect(event) { var input = event.target; var reader = new FileReader(); reader.onload = function () { var img = new Image(); img.onload = function () { var progressBar = document.querySelector('.progress-bar span'); var downloadBtn = document.getElementById('downloadBtn'); var startTime = Date.now(); var compressionTime = 5000; // 5 seconds for compression var interval = setInterval(function () { var elapsedTime = Date.now() - startTime; var progress = Math.min((elapsedTime / compressionTime) * 100, 100); progressBar.style.width = progress + '%'; if (progress >= 100) { clearInterval(interval); var compressedImage = compressImage(img); document.getElementById('preview').src = compressedImage; downloadBtn.href = compressedImage; downloadBtn.style.display = 'inline-block'; } }, 100); }; img.src = reader.result; }; reader.readAsDataURL(input.files[0]); } // Attach the event listener to the file input document.getElementById('inputImage').addEventListener('change', handleFileSelect);