<!doctypehtml><!-- HEIC to JPG By Fullintro - https://fullintro.com --><html lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1"name=viewport><title>HEIC to JPG</title><link href="https://fonts.googleapis.com/css2?family=Rubik&display=swap"rel=stylesheet><style>*{padding:0;margin:0;box-sizing:border-box;font-family:Poppins,sans-serif}body{background-color:#fff}.main{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:1em}.wrapper{text-align:center;width:min(90%,800px);background-color:#f0f0f0;border:6px solid #bfbfbf;padding:2em 3em;border-radius:10px;transition:box-shadow .3s ease-in-out}.wrapper.drag-over{box-shadow:0 0 20px rgba(0,0,0,.3)}h1{font-size:40px;color:#5a5a5a}p{color:#5a5a5a;font-size:16px}input[type=file]{display:none}label{display:block;position:relative;background-color:#1cab26;color:#fff;font-size:16px;text-align:center;width:250px;padding:16px 0;border-radius:.3em;margin:16px auto;cursor:pointer}.container{display:flex;flex-wrap:wrap;justify-content:center;gap:1em;margin-top:20px}.image-block{background-color:#f9f9f9;padding:1em;border-radius:.5em;text-align:center;width:200px;box-shadow:0 4px 6px rgba(0,0,0,.1);position:relative}.loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,.7);color:#fff;padding:.5em;border-radius:.3em;font-size:14px}img{display:block;max-width:100%;margin-bottom:1em}a{display:inline-block;border:2px solid #1cab26;background-color:#2cab26;color:#fff;text-decoration:none;padding:.5em 1em;font-size:.9em;border-radius:.3em;margin-top:.5em}.warning{color:red;font-size:14px;margin-top:20px;display:none}</style><div class=main><div class=wrapper id=drop-zone><p>Drag and drop HEIC images here or use the upload button below.</p><input accept=".heic, .HEIC"id=file-input multiple type=file> <label for=file-input>Upload HEIC Images</label><div class=warning id=warning-message>Please upload valid HEIC images. Maximum 12 images at once.</div><div class=container id=image-container></div></div></div><!-- Include the heic2any library --><script src="https://cdn.jsdelivr.net/npm/heic2any@0.0.3/dist/heic2any.min.js"></script><script>const fileInput=document.getElementById("file-input");const imageContainer=document.getElementById("image-container");const dropZone=document.getElementById("drop-zone");const warningMessage=document.getElementById("warning-message");const MAX_FILES=12;dropZone.addEventListener("dragover",(event)=>{event.preventDefault();dropZone.classList.add("drag-over")});dropZone.addEventListener("dragleave",()=>{dropZone.classList.remove("drag-over")});dropZone.addEventListener("drop",(event)=>{event.preventDefault();dropZone.classList.remove("drag-over");const files=Array.from(event.dataTransfer.files);handleFiles(files)});fileInput.addEventListener("change",()=>{const files=Array.from(fileInput.files);handleFiles(files)});function handleFiles(files){imageContainer.innerHTML="";warningMessage.style.display="none";if(files.length>MAX_FILES){warningMessage.textContent=`You can only upload a maximum of ${MAX_FILES} images.`;warningMessage.style.display="block";return}
files.forEach((file)=>{if(!file.name.toLowerCase().endsWith(".heic")){warningMessage.style.display="block";return}
const imageBlock=document.createElement("div");imageBlock.classList.add("image-block");const loader=document.createElement("div");loader.classList.add("loader");loader.textContent="Converting...";imageBlock.appendChild(loader);imageContainer.appendChild(imageBlock);const reader=new FileReader();reader.readAsArrayBuffer(file);reader.onload=function(event){heic2any({blob:new Blob([event.target.result]),toType:"image/jpeg",quality:0.8}).then((convertedBlob)=>{const jpgUrl=URL.createObjectURL(convertedBlob);const image=document.createElement("img");image.src=jpgUrl;image.alt="Converted Image";const downloadLink=document.createElement("a");downloadLink.href=jpgUrl;downloadLink.download=file.name.replace(/\.[^/.]+$/,"")+".jpg";downloadLink.textContent="Download";loader.remove();imageBlock.appendChild(image);imageBlock.appendChild(downloadLink)}).catch(()=>{loader.textContent="Conversion Failed"})}})}</script><script>document.addEventListener('contextmenu',function(event){event.preventDefault()});</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.2/iframeResizer.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.2/iframeResizer.contentWindow.min.js"></script></body></html>