简单强大的图片压缩
立即优化你的 JPG、PNG 或 WebP 文件。轻松减少文件大小,同时保持良好的视觉质量。
⬆
将图片拖到此处
支持拖拽上传,或点击下方按钮选择文件
压缩队列
已上传图片
压缩任务
压缩设置
结束前加这一小段 -->
// 清理因带 redirect 参数跳返首页而残留的 login.html 片段
(function removeAuthGhost(){
var auth = document.getElementById('auth');
if (auth && auth.parentElement) auth.parentElement.removeChild(auth);
var me = document.getElementById('me');
if (me && me.parentElement) me.parentElement.removeChild(me);
})();
(function(){
var s=document.createElement('script');
s.src = (location.protocol === 'file:' ? './app.v2.js?v=20251228' : '/app.js?v=20251209');
document.head.appendChild(s);
function navTo(p){ location.href = (location.protocol==='file:'? p : '/'+p); }
var navLogin = document.getElementById('nav-login'), navAbout = document.getElementById('nav-about'), navPrivacy = document.getElementById('nav-privacy');
// 登录按钮的行为交给 app.js 按登录状态动态控制,这里不做默认跳转绑定
if (navAbout) navAbout.addEventListener('click', function(){ navTo('about.html'); });
if (navPrivacy) navPrivacy.addEventListener('click', function(){ navTo('privacy.html'); });
})();
(function(){
var drop = document.getElementById('drop-area'), input = document.getElementById('file-input'), btnBrowse = document.getElementById('btn-browse'), btnUploadMore = document.getElementById('btn-upload-more');
function stop(e){ e.preventDefault(); e.stopPropagation(); }
['dragenter','dragover','dragleave','drop'].forEach(ev=>{
document.addEventListener(ev, stop, false);
drop.addEventListener(ev, stop, false);
});
drop.addEventListener('dragover', ()=>{ drop.style.borderColor='#b8bfff'; }, false);
drop.addEventListener('dragleave', ()=>{ drop.style.borderColor='#d9ddee'; }, false);
drop.addEventListener('drop', (e)=>{
drop.style.borderColor='#d9ddee';
if(e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length){
input.files = e.dataTransfer.files;
var btn = document.getElementById('btn-upload');
if (btn) btn.click();
}
}, false);
function browse(){ input.click(); }
if(btnBrowse) btnBrowse.addEventListener('click', browse);
if(btnUploadMore) btnUploadMore.addEventListener('click', browse);
var q = document.getElementById('quality'), qv = document.getElementById('qv');
if(q && qv){ q.addEventListener('input', ()=>{ qv.textContent = q.value; }); }
window.addEventListener('load', function(){
var btnAll = document.getElementById('btn-download-all');
if(!btnAll) return;
btnAll.addEventListener('click', function(){
if(!window.state || !Array.isArray(window.state.tasks)){ alert('暂无可下载任务'); return; }
var finished = window.state.tasks.filter(t=>t.status===1);
if(!finished.length){ alert('暂无已完成任务'); return; }
finished.forEach(async t=>{
try{ if(window.downloadById){ await window.downloadById(t.id); } }catch(e){ console.error('download all failed', e); }
});
});
});
})();