Help
RSS
API
Feed
Maltego
Contact
Domain > ai-image-1.haizeiqi.cn
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-09-18
172.67.153.98
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Thu, 18 Sep 2025 08:09:09 GMTContent-Type: text/htmlContent-Length: 35592Connection: keep-aliveAccess-Control-Allow-Origin: *Access-Control-Allow-Headers: Content-TypeAccess-Control-Allow-Methods: GET, POSTVary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?snwKKREjTE%2B4PpTOLELzd7P1%2BsOQMHxAmcOlxtaS8XbzlabhGwNf5yN047ZlX9%2F%2F4CVbhRtLhs7yh9HOIKsjTH05yKHLKVVyl4LOLWO5TGoRkMERb}}Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Server: cloudflareCF-RAY: 980f5c0bdaf2ff0e-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langzh>head> meta charsetUTF-8> title>AI绘画/title> meta contentwidthdevice-width, initial-scale1, maximum-scale1, user-scalableno nameviewport> meta content使用先进的AI技术,轻松创作独特的数字艺术作品。探索无限可能,释放你的创意潜能。 namedescription> meta contentyes nameapple-mobile-web-app-capable> meta contentblack nameapple-mobile-web-app-status-bar-style> meta contentAI绘画 nameapple-mobile-web-app-title>!--页面logo--> !-- link relicon hrefhttps://xx.com typeimage/png>--> !-- link relapple-touch-icon hrefhttps://xx.com>--> style> :root { --primary-color: #4facfe; --secondary-color: #00f2fe; --background-color: #f5f7fa; --text-color: #333; --card-background: rgba(255, 255, 255, 0.9); } body, html { margin: 0; padding: 0; height: 100%; width: 100%; font-family: Segoe UI, Tahoma, Geneva, Verdana, sans-serif; /*background: linear-gradient(135deg, var(--background-color) 0%, #c3cfe2 100%);*/ background: linear-gradient(135deg, #e6f5ff 0%, #ffe6f5 100%); color: var(--text-color); } .container { display: flex; justify-content: center; align-items: center; min-height: 100vh; padding: 20px; box-sizing: border-box; } .card { background-color: var(--card-background); backdrop-filter: blur(10px); border-radius: 20px; padding: 2rem; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); width: 90%; max-width: 600px; display: flex; flex-direction: column; align-items: center; transition: all 0.3s ease; } .card:hover { transform: translateY(-5px); box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15); } h1 { font-size: 2.5rem; margin-bottom: 1rem; text-align: center; background: linear-gradient(to right, var(--primary-color), var(--secondary-color)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .image-container { width: 100%; max-width: 500px; height: 350px; border-radius: 10px; margin-bottom: 1rem; background-color: rgba(0, 0, 0, 0.05); display: flex; justify-content: center; align-items: center; overflow: hidden; position: relative; } #aiImage { max-width: 100%; max-height: 100%; object-fit: contain; } .loading-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.8); display: flex; justify-content: center; align-items: center; z-index: 10; display: none; } .loading-spinner { border: 5px solid #f3f3f3; border-top: 5px solid var(--primary-color); border-radius: 50%; width: 50px; height: 50px; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } select { width: 100%; padding: 0.75rem; margin-bottom: 1rem; border: 1px solid #ccc; border-radius: 5px; font-size: 1rem; transition: all 0.3s ease; } select:focus, inputtypetext:focus { border-color: var(--primary-color); box-shadow: 0 0 0 2px rgba(79, 172, 254, 0.2); } .button-group { display: flex; justify-content: space-between; width: 100%; } button { padding: 0.75rem 1.5rem; border-radius: 5px; cursor: pointer; font-size: 1rem; transition: all 0.3s ease; border: none; outline: none; } .submit-btn { background: #cccccc; color: white; flex-grow: 1; margin-right: 10px; } .submit-btn.active { background: linear-gradient(to right, var(--primary-color) 0%, var(--secondary-color) 100%); } .submit-btn:hover { opacity: 0.9; transform: translateY(-2px); } .download-btn { background: #2ecc71; color: white; } .download-btn:hover { background: #27ae60; } .history-btn { background: #3498db; color: white; margin-left: 10px; } .history-btn:hover { background: #2980b9; } .modal { display: none; position: fixed; z-index: 1; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0, 0, 0, 0.4); } .modal-content { background-color: #fefefe; margin: 15% auto; padding: 20px; border: 1px solid #888; width: 80%; max-width: 600px; border-radius: 10px; } .close { color: #aaa; float: right; font-size: 28px; font-weight: bold; } .close:hover, .close:focus { color: black; text-decoration: none; cursor: pointer; } .history-item { display: flex; align-items: center; margin-bottom: 10px; padding: 10px; background-color: #f9f9f9; border-radius: 5px; } .history-item img { width: 50px; height: 50px; object-fit: cover; margin-right: 10px; border-radius: 5px; } .history-item-buttons { margin-left: auto; } .history-item-buttons button { margin-left: 5px; padding: 5px 10px; font-size: 0.8rem; } .redraw-btn { background-color: #3498db; color: white; } .delete-btn { background-color: #e74c3c; color: white; } .clear-history-btn { background-color: #e74c3c; color: white; margin-top: 10px; } .theme-toggle { position: absolute; top: 10px; right: 10px; background: none; border: none; font-size: 1.5rem; cursor: pointer; } .tooltip { position: relative; display: inline-block; } .tooltip .tooltiptext { visibility: hidden; width: 120px; background-color: #555; color: #fff; text-align: center; border-radius: 6px; padding: 5px; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -60px; opacity: 0; transition: opacity 0.3s; } .tooltip:hover .tooltiptext { visibility: visible; opacity: 1; } @media (max-width: 768px) { .card { width: 95%; padding: 1.5rem; } h1 { font-size: 2rem; } select, inputtypetext, button { font-size: 0.9rem; } .image-container { height: 250px; } } @media (max-width: 480px) { .card { width: 100%; border-radius: 0; } h1 { font-size: 1.75rem; } .button-group { flex-direction: column; } .submit-btn, .download-btn, .history-btn { margin: 5px 0; width: 100%; } } .input-group { display: flex; /* 使用 Flex 布局 */ align-items: center; /* 垂直居中对齐 */ width: 100%; /* 占据父元素的全部宽度 */ margin-bottom: 1rem; } .input-group inputtypetext { width: 75%; /* 输入框宽度设为70% */ padding: 0.75rem; margin-right: 1rem; /* 添加右边距以便与按钮隔开 */ border: 1px solid #ccc; border-radius: 5px; font-size: 1rem; transition: all 0.3s ease; } .random-btn { padding: 0.75rem 1rem; border-radius: 5px; cursor: pointer; font-size: 1rem; transition: all 0.3s ease; border: none; outline: none; background-color: #3498db; color: white; white-space: nowrap; /* 防止文字换行 */ flex-shrink: 0; /* 防止按钮缩小 */ } .random-btn:hover { background-color: #2980b9; } /*黑暗模式*/ .dark-theme { --background-color: #2c3e50; --text-color: #ecf0f1; --card-background: rgba(44, 62, 80, 0.9); background: linear-gradient(135deg, #1d2731 0%, #292e3c 100%); } /*.dark-theme select, .dark-theme inputtypetext {*/ .dark-theme select, .dark-theme inputtypetext, .dark-theme .custom-size-inputs inputtypenumber { background-color: #333; /* 较深的背景色 */ color: #fff; /* 文本颜色 */ border-color: #555; /* 边框颜色 */ } /* 添加尺寸选项 */ .size-options { display: flex; align-items: center; /* 保持垂直居中对齐 */ justify-content: space-between; /* 使选择框和输入框分别靠左右两端 */ width: 100%; /* 确保占据整行 */ /*margin-top: 0.5rem;*/ } .size-options label { white-space: nowrap; /* 防止文字换行 */ flex-shrink: 0; /* 防止按钮缩小 */ margin-right: 0.5rem; } .size-options select { width: 100%; /* 选择框占据左侧空间 */ margin-right: 0.5rem; } .custom-size-inputs { display: flex; align-items: center; } .custom-size-inputs inputtypenumber { width: 50px; /* 输入框宽度设为固定值 */ padding: 0.75rem; margin-right: 0.5rem; /* 添加右边距以便与按钮隔开 */ border: 1px solid #ccc; border-radius: 5px; font-size: 1rem; margin-bottom: 1rem; /*transition: all 0.3s ease;*/ } /*响应式样式 */ @media (max-width: 480px) { .size-options { flex-direction: column; } .size-options select { margin-bottom: 1rem; /* 为选择框添加底部边距 */ } .custom-size-inputs { flex-direction: row; /* 输入框水平排列 */ justify-content: space-between; /* 输入框分别靠左右两端 */ width: 100%; /* 确保占据整行 */ margin-top: 0; /* 移除顶部边距 */ } .custom-size-inputs inputtypenumber { margin-bottom: 0; /* 移除底部边距 */ } } .footer { display: flex; justify-content: center; padding: 5px; color: #888; /* 灰色文字 */ font-size: 0.8em; /* 小号字体 */ border-top: 1px solid #ddd; /* 可选边框 */ } .footer a { color: #888; /* 灰色链接 */ text-decoration: none; /* 默认无下划线 */ transition: text-decoration 0.3s ease; /* 过渡效果 */ } .footer a:hover { text-decoration: underline; /* 鼠标悬停时显示下划线 */ } /style> script> document.addEventListener(DOMContentLoaded, function () { const submitButton document.getElementById(submitButton); const promptInput document.getElementById(prompt); const downloadBtn document.getElementById(downloadBtn); const historyBtn document.getElementById(historyBtn); const modal document.getElementById(historyModal); const closeBtn document.getElementsByClassName(close)0; const historyList document.getElementById(historyList); const clearHistoryBtn document.getElementById(clearHistoryBtn); const themeToggle document.getElementById(themeToggle); let history JSON.parse(localStorage.getItem(aiDrawingHistory)) || ; function updateHistory(prompt, imageUrl) { history.push({prompt: prompt, imageUrl: imageUrl, timestamp: new Date()}); localStorage.setItem(aiDrawingHistory, JSON.stringify(history)); renderHistory(); } const prompts 1girl,solo,cute,in glass,atmosphere_X,best quality,beautiful,extremely detailed,masterpiece,very aesthetic, a girl,,nahida,light,full body,symbol eye, nahida,1girl,fair_skin,in summer,day,in a meadow,sky,cirrus_fibratus,intense shadows,blonde hair,pleated_dress,collared_shirt,blue eyes,long hair,fang,smile, ((best quality)), ((masterpiece)),A Chinese couple in Hanfu embracing on an arch bridge, a sky full of rose petals, a romantic atmosphere, a huge moon, colorful clouds, clouds, ethereal, reflections of water, a mirage, a breeze,(Chinese ink style), simple background, flower, signature, no humans, sparkle, leaf, plant, white flower, black background, still life, embroidery, 1 girl,(orange light effect),hair ornament,jewelry,looking at viewer,flower,floating hair,water,underwater,air bubble,submerged, 80sDBA style, masterpiece,best quality,high quality,loli,1girl, solo, long hair, looking at viewer, blush, bangs, thighhighs, dress, ribbon, brown eyes, very long hair, closed mouth, standing, full body, yellow eyes, white hair, short sleeves, outdoors, sky,no shoes, day, puffy sleeves, looking back, cloud, from behind, white dress, white thighhighs, red ribbon, tree, blue sky, puffy short sleeves, petals, cherry blossoms, skirt hold,, 1 girl,Clothes in the shape of snowflake,render,technology, (best quality) (masterpiece), (highly in detailed), 4K,Official art, unit 8 k wallpaper, ultra detailed, masterpiece, best quality, extremely detailed,CG,low saturation, as style, line art, best quality,masterpiece,sculpture,wonderland,,chinese fairy tales,an old man,boiling tea,drink tea,a painting of history floating and curved in the background,mountain,white cloud,chinese style courtyard,pavilion,chinese tea mountains,, Chinese architecture, trees,,white hair ,, 1girl, absurdres, arrow_(symbol), ata-zhubo, bicycle, billboard, black_eyes, black_footwear, black_hair, blue_sky, bridge, building, car, cardigan, city, cityscape, commentary_request, crosswalk, day, fire_hydrant, folding_bicycle, grey_cardigan, highres, lamppost, loafers, motor_vehicle, necktie, original, overpass, power_lines, railing, red_necktie, red_skirt, road, road_sign, scenery, school_uniform, shoes, short_hair, sign, skirt, sky, solo, stairs, standing, street, traffic_cone, traffic_light, truck, utility_pole, vending_machine, Steep stone walls towered into the sky, thunderous waves crashed against the river bank, and the waves stirred up like thousands of piles of white snow., 1girl, solo, elf, golden eyes, glowing eyes, slit_pupils, silver hair, green gradient hair, long hair, blunt bangs, brown capelet, frilled shirt, long sleeves, green brooch, pouch, belt, brown gloves, upper body, (chibi:0.4), (close-up), (broken:1.3), half-closed eye, expressionless, from side, depth of field, fallen leaves, side light, gingko, tree, masterpiece,bestquality, line art,, flower, outdoors, sky, tree, no humans, window, bird, building, scenery, house,oil painting style, (masterpiece,top quality,best quality,official art,beautiful and aesthetic:1.2),gf-hd,1girl,loli,solo,long hair,lovely smilie,(wink),(blazer,white shirt,white blouse:2),cozy,(lace details),v,robinSR,love heart, moon,outdoors,full moon,night,flower,cherry blossoms,sky,tree,pink flower flying around,night sky,no humans,masterpiece,illustration,extremely fine and beautiful,perfect details,stream,, comic,bestquality, masterpiece, super details, fine fabrics, highly detailed eyes and face, extremely fine and detailed, perfect details, 1 girl, solo, long hair, bangs, rosy cheeks, pearl hair clips, strawberry blonde tresses, strawberry-shaped stud earrings, sweet lolita-style dress with berry prints, holding a basket of fresh strawberries, whimsical garden setting, sunny and bright, (comic),a girl, soft colors, long curly hair, ocean blue hair, delicate flower crown, shimmering hazel eyes, gentle smile, bohemian style dress, sunny beach background, headshot, bestquality, masterpiece, super details, fine fabrics, high detailed eyes and detailed face, comic, extremely fine and detailed, perfect details, 1girl, solo, long hair, bangs, rose pink eyes, long sleeves, frilly pastel dress, lace accessory, sweet smile, holding a pink macaron, cotton candy pink hair, hair ribbons, soft pink and white dress, fairy tale garden, pink flowers, balloons, ; const blobToBase64 (blob) > new Promise((resolve, reject) > { const reader new FileReader(); reader.onerror reject; reader.onload () > { resolve(reader.result); }; reader.readAsDataURL(blob); }); // 随机选择一个提示词 function getRandomPrompt() { const randomIndex Math.floor(Math.random() * prompts.length); return promptsrandomIndex; } // 随机提示词按钮 const randomButton document.getElementById(randomButton); randomButton.addEventListener(click, function () { const randomPrompt getRandomPrompt(); promptInput.value randomPrompt; promptInput.dispatchEvent(new Event(input)); // 触发 input 事件 }); function setupSizeOptions() { const sizeSelect document.getElementById(size-select); const widthInput document.getElementById(width-input); const heightInput document.getElementById(height-input); // 监听输入框的变化,限制最大值为1024 widthInput.addEventListener(input, function () { if (parseInt(this.value) > 1024) { this.value 1024; } }); heightInput.addEventListener(input, function () { if (parseInt(this.value) > 1024) { this.value 1024; } }); sizeSelect.addEventListener(change, function () { const selectedValue this.value; // 如果选择了自定义,则启用输入框 if (selectedValue custom) { widthInput.disabled false; heightInput.disabled false; return; } // 否则禁用输入框并根据选择的尺寸设置默认值 widthInput.disabled true; heightInput.disabled true; switch (selectedValue) { case 16x9-horizontal: widthInput.value 1024; heightInput.value 576; break; case 16x9-vertical: widthInput.value 576; heightInput.value 1024; break; case 4x3-horizontal: widthInput.value 1024; heightInput.value 768; break; case 4x3-vertical: widthInput.value 768; heightInput.value 1024; break; case 1x1: widthInput.value 1024; heightInput.value 1024; break; default: widthInput.value 1024; heightInput.value 576; break; } }); } setupSizeOptions() function renderHistory() { historyList.innerHTML ; history.forEach((item, index) > { const historyItem document.createElement(div); historyItem.className history-item; historyItem.innerHTML ` img src${item.imageUrl} alt${item.prompt}> div> span>${item.prompt}/span> br> small>${new Date(item.timestamp).toLocaleString()}/small> /div> div classhistory-item-buttons> button classredraw-btn tooltip data-index${index}>重绘span classtooltiptext>使用此提示词重新生成图片/span>/button> button classdelete-btn tooltip data-index${index}>删除span classtooltiptext>从历史记录中删除此项/span>/button> /div> `; historyList.appendChild(historyItem); }); } function deleteHistoryItem(index) { history.splice(index, 1); localStorage.setItem(aiDrawingHistory, JSON.stringify(history)); renderHistory(); } function clearHistory() { if (confirm(确定要清空所有历史记录吗?此操作不可撤销。)) { history ; localStorage.removeItem(aiDrawingHistory); renderHistory(); } } async function generateImage(prompt, width, height) { // 修改函数签名以接收宽度和高度 submitButton.disabled true; submitButton.textContent 正在创作...; document.querySelector(.loading-overlay).style.display flex; const model document.getElementById(model).value; const resolution { width: parseInt(width), // 使用从参数接收的宽度 height: parseInt(height) // 使用从参数接收的高度 }; try { const controller new AbortController(); const signal controller.signal; setTimeout(() > { controller.abort(); }, 300000); const response await fetch(`${window.location.origin}`, { // const response await fetch(`https://aidraw.foxhank.top`, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ model: model, prompt: prompt, resolution: resolution, upload: true }), signal: signal }); if (!response.ok) { throw new Error(`请求失败:${response.status} ${response.statusText}`); } // 由于历史记录功能,本地保存历史生成的图片会超过浏览器限额,所以使用图床存储历史记录 // 后期可能设一个开关,如果关闭开关就不上传到图床 // const responseData await response.json(); // 上传改为服务器端上传,返回一个图床路径 // 提取 imageUrl // const imageUrl responseData.imageUrl; // 读取响应的文本数据 // 将响应体转换为Blob const blob await response.blob(); // 将Blob转换为Base64编码的字符串 const imageUrl await blobToBase64(blob); document.getElementById(aiImage).src imageUrl; // document.getElementById(aiImage).src Image; updateHistory(prompt, imageUrl); downloadBtn.style.display block; } catch (error) { if (error.name AbortError) { alert(服务器连接超时,请稍后重试。); } else { console.error(Error:, error); alert(生成过程中发生错误,请重试。\n错误: + error.message + \n); } } finally { submitButton.textContent 开始创作; submitButton.disabled false; document.querySelector(.loading-overlay).style.display none; } } promptInput.addEventListener(input, function () { if (this.value.trim() ! ) { submitButton.classList.add(active); } else { submitButton.classList.remove(active); } }); submitButton.addEventListener(click, function (event) { event.preventDefault(); if (promptInput.value.trim() ) { alert(请输入描述词); return; } generateImage(promptInput.value.trim(), document.getElementById(width-input).value, document.getElementById(height-input).value); }); downloadBtn.addEventListener(click, function () { const image document.getElementById(aiImage); const link document.createElement(a); link.href image.src; link.download `ai-artwork-${new Date().toISOString()}.png`; document.body.appendChild(link); link.click(); document.body.removeChild(link); }); historyBtn.onclick function () { modal.style.display block; renderHistory(); } closeBtn.onclick function () { modal.style.display none; } window.onclick function (event) { if (event.target modal) { modal.style.display none; } } historyList.addEventListener(click, function (event) { if (event.target.classList.contains(redraw-btn)) { const index event.target.getAttribute(data-index); const prompt historyindex.prompt; promptInput.value prompt; modal.style.display none; generateImage(prompt); } else if (event.target.classList.contains(delete-btn)) { const index event.target.getAttribute(data-index); deleteHistoryItem(index); } }); clearHistoryBtn.addEventListener(click, clearHistory); themeToggle.addEventListener(click, function () { document.body.classList.toggle(dark-theme); themeToggle.textContent document.body.classList.contains(dark-theme) ? 🌞 : 🌙; localStorage.setItem(theme, document.body.classList.contains(dark-theme) ? dark : light); }); // 检查并应用保存的主题 if (localStorage.getItem(theme) dark) { document.body.classList.add(dark-theme); themeToggle.textContent 🌞; } // 添加键盘快捷键支持 document.addEventListener(keydown, function (event) { if (event.ctrlKey && event.key Enter) { submitButton.click(); } }); // 添加拖放支持 const dropZone document.querySelector(.image-container); dropZone.addEventListener(dragover, (e) > { e.preventDefault(); dropZone.style.border 2px dashed #4facfe; }); dropZone.addEventListener(dragleave, () > { dropZone.style.border none; }); dropZone.addEventListener(drop, (e) > { e.preventDefault(); dropZone.style.border none; const file e.dataTransfer.files0; if (file && file.type.startsWith(image/)) { const reader new FileReader(); reader.onload (e) > { document.getElementById(aiImage).src e.target.result; }; reader.readAsDataURL(file); } }); }); /script>/head>body>div classcontainer> div classcard> h1>AI绘画创作平台/h1> div classimage-container> img altAI生成的图片 idaiImage srcdata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg> div classloading-overlay> div classloading-spinner>/div> /div> /div> select idmodel> option valuedreamshaper-8-lcm>DreamShaper 8 LCM(容易出黑图)/option> option valuestable-diffusion-xl-base-1.0>Stable Diffusion XL Base 1.0(效果较好)/option> option valuestable-diffusion-xl-lightning>Stable Diffusion XL Lightning(效果一般 速度快)/option> option selected valueflux-1-schnell>flux-1-schnell(推荐用这个)/option> > /select> div classinput-group> input idprompt placeholder请输入你想要创作的画面描述... typetext> button classbutton random-btn idrandomButton>随机提示词/button> /div> !-- 添加尺寸选择功能 --> div classsize-options> label forsize-select>尺寸:/label> select idsize-select> option value16x9-horizontal>横屏 16:9/option> option value16x9-vertical>竖屏 16:9/option> option value4x3-horizontal>横屏 4:3/option> option value4x3-vertical>竖屏 4:3/option> option value1x1>正方形 1:1/option> option valuecustom>自定义/option> /select> !-- 自定义输入框 --> div classcustom-size-inputs> label forwidth-input>宽度/label> input disabled idwidth-input max1024 min1 placeholder宽度 typenumber value1024> label forheight-input>高度/label> input disabled idheight-input max1024 min1 placeholder高度 typenumber value576> /div> /div> div classbutton-group> button classsubmit-btn idsubmitButton typebutton>开始创作/button> button classdownload-btn iddownloadBtn styledisplay: none; typebutton>下载图片/button> button classhistory-btn idhistoryBtn typebutton>历史记录/button> /div> !-- footer classfooter> /br>/br> p>前端来自佬友小黑紫一枚:a hrefhttps://linux.do/u/jiu1/ target_blank>https://linux.do/u/jiu1//a> /p> /footer> --> /div>/div>div classmodal idhistoryModal> div classmodal-content> span classclose>×/span> h2>历史记录/h2> div idhistoryList>/div> button classclear-history-btn idclearHistoryBtn>清空历史记录/button> /div>/div>button classtheme-toggle idthemeToggle>🌙/button>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Thu, 18 Sep 2025 08:09:09 GMTContent-Type: text/htmlContent-Length: 35592Connection: keep-aliveAccess-Control-Allow-Origin: *Access-Control-Allow-Headers: Content-TypeAccess-Control-Allow-Methods: GET, POSTVary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sq8R%2BHdYUE8Zm1zzMVxK4yyGut2gkbRCE71lmcEmQn%2F6FnsNyAD6l4SYZDd%2BdzcJQuDtRvLnk34j0%2FsNZDMaGq5cMO6mYw1p4p0IkipBzpriMP8Rm}}Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Server: cloudflareCF-RAY: 980f5c0cda928e62-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langzh>head> meta charsetUTF-8> title>AI绘画/title> meta contentwidthdevice-width, initial-scale1, maximum-scale1, user-scalableno nameviewport> meta content使用先进的AI技术,轻松创作独特的数字艺术作品。探索无限可能,释放你的创意潜能。 namedescription> meta contentyes nameapple-mobile-web-app-capable> meta contentblack nameapple-mobile-web-app-status-bar-style> meta contentAI绘画 nameapple-mobile-web-app-title>!--页面logo--> !-- link relicon hrefhttps://xx.com typeimage/png>--> !-- link relapple-touch-icon hrefhttps://xx.com>--> style> :root { --primary-color: #4facfe; --secondary-color: #00f2fe; --background-color: #f5f7fa; --text-color: #333; --card-background: rgba(255, 255, 255, 0.9); } body, html { margin: 0; padding: 0; height: 100%; width: 100%; font-family: Segoe UI, Tahoma, Geneva, Verdana, sans-serif; /*background: linear-gradient(135deg, var(--background-color) 0%, #c3cfe2 100%);*/ background: linear-gradient(135deg, #e6f5ff 0%, #ffe6f5 100%); color: var(--text-color); } .container { display: flex; justify-content: center; align-items: center; min-height: 100vh; padding: 20px; box-sizing: border-box; } .card { background-color: var(--card-background); backdrop-filter: blur(10px); border-radius: 20px; padding: 2rem; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); width: 90%; max-width: 600px; display: flex; flex-direction: column; align-items: center; transition: all 0.3s ease; } .card:hover { transform: translateY(-5px); box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15); } h1 { font-size: 2.5rem; margin-bottom: 1rem; text-align: center; background: linear-gradient(to right, var(--primary-color), var(--secondary-color)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .image-container { width: 100%; max-width: 500px; height: 350px; border-radius: 10px; margin-bottom: 1rem; background-color: rgba(0, 0, 0, 0.05); display: flex; justify-content: center; align-items: center; overflow: hidden; position: relative; } #aiImage { max-width: 100%; max-height: 100%; object-fit: contain; } .loading-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.8); display: flex; justify-content: center; align-items: center; z-index: 10; display: none; } .loading-spinner { border: 5px solid #f3f3f3; border-top: 5px solid var(--primary-color); border-radius: 50%; width: 50px; height: 50px; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } select { width: 100%; padding: 0.75rem; margin-bottom: 1rem; border: 1px solid #ccc; border-radius: 5px; font-size: 1rem; transition: all 0.3s ease; } select:focus, inputtypetext:focus { border-color: var(--primary-color); box-shadow: 0 0 0 2px rgba(79, 172, 254, 0.2); } .button-group { display: flex; justify-content: space-between; width: 100%; } button { padding: 0.75rem 1.5rem; border-radius: 5px; cursor: pointer; font-size: 1rem; transition: all 0.3s ease; border: none; outline: none; } .submit-btn { background: #cccccc; color: white; flex-grow: 1; margin-right: 10px; } .submit-btn.active { background: linear-gradient(to right, var(--primary-color) 0%, var(--secondary-color) 100%); } .submit-btn:hover { opacity: 0.9; transform: translateY(-2px); } .download-btn { background: #2ecc71; color: white; } .download-btn:hover { background: #27ae60; } .history-btn { background: #3498db; color: white; margin-left: 10px; } .history-btn:hover { background: #2980b9; } .modal { display: none; position: fixed; z-index: 1; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0, 0, 0, 0.4); } .modal-content { background-color: #fefefe; margin: 15% auto; padding: 20px; border: 1px solid #888; width: 80%; max-width: 600px; border-radius: 10px; } .close { color: #aaa; float: right; font-size: 28px; font-weight: bold; } .close:hover, .close:focus { color: black; text-decoration: none; cursor: pointer; } .history-item { display: flex; align-items: center; margin-bottom: 10px; padding: 10px; background-color: #f9f9f9; border-radius: 5px; } .history-item img { width: 50px; height: 50px; object-fit: cover; margin-right: 10px; border-radius: 5px; } .history-item-buttons { margin-left: auto; } .history-item-buttons button { margin-left: 5px; padding: 5px 10px; font-size: 0.8rem; } .redraw-btn { background-color: #3498db; color: white; } .delete-btn { background-color: #e74c3c; color: white; } .clear-history-btn { background-color: #e74c3c; color: white; margin-top: 10px; } .theme-toggle { position: absolute; top: 10px; right: 10px; background: none; border: none; font-size: 1.5rem; cursor: pointer; } .tooltip { position: relative; display: inline-block; } .tooltip .tooltiptext { visibility: hidden; width: 120px; background-color: #555; color: #fff; text-align: center; border-radius: 6px; padding: 5px; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -60px; opacity: 0; transition: opacity 0.3s; } .tooltip:hover .tooltiptext { visibility: visible; opacity: 1; } @media (max-width: 768px) { .card { width: 95%; padding: 1.5rem; } h1 { font-size: 2rem; } select, inputtypetext, button { font-size: 0.9rem; } .image-container { height: 250px; } } @media (max-width: 480px) { .card { width: 100%; border-radius: 0; } h1 { font-size: 1.75rem; } .button-group { flex-direction: column; } .submit-btn, .download-btn, .history-btn { margin: 5px 0; width: 100%; } } .input-group { display: flex; /* 使用 Flex 布局 */ align-items: center; /* 垂直居中对齐 */ width: 100%; /* 占据父元素的全部宽度 */ margin-bottom: 1rem; } .input-group inputtypetext { width: 75%; /* 输入框宽度设为70% */ padding: 0.75rem; margin-right: 1rem; /* 添加右边距以便与按钮隔开 */ border: 1px solid #ccc; border-radius: 5px; font-size: 1rem; transition: all 0.3s ease; } .random-btn { padding: 0.75rem 1rem; border-radius: 5px; cursor: pointer; font-size: 1rem; transition: all 0.3s ease; border: none; outline: none; background-color: #3498db; color: white; white-space: nowrap; /* 防止文字换行 */ flex-shrink: 0; /* 防止按钮缩小 */ } .random-btn:hover { background-color: #2980b9; } /*黑暗模式*/ .dark-theme { --background-color: #2c3e50; --text-color: #ecf0f1; --card-background: rgba(44, 62, 80, 0.9); background: linear-gradient(135deg, #1d2731 0%, #292e3c 100%); } /*.dark-theme select, .dark-theme inputtypetext {*/ .dark-theme select, .dark-theme inputtypetext, .dark-theme .custom-size-inputs inputtypenumber { background-color: #333; /* 较深的背景色 */ color: #fff; /* 文本颜色 */ border-color: #555; /* 边框颜色 */ } /* 添加尺寸选项 */ .size-options { display: flex; align-items: center; /* 保持垂直居中对齐 */ justify-content: space-between; /* 使选择框和输入框分别靠左右两端 */ width: 100%; /* 确保占据整行 */ /*margin-top: 0.5rem;*/ } .size-options label { white-space: nowrap; /* 防止文字换行 */ flex-shrink: 0; /* 防止按钮缩小 */ margin-right: 0.5rem; } .size-options select { width: 100%; /* 选择框占据左侧空间 */ margin-right: 0.5rem; } .custom-size-inputs { display: flex; align-items: center; } .custom-size-inputs inputtypenumber { width: 50px; /* 输入框宽度设为固定值 */ padding: 0.75rem; margin-right: 0.5rem; /* 添加右边距以便与按钮隔开 */ border: 1px solid #ccc; border-radius: 5px; font-size: 1rem; margin-bottom: 1rem; /*transition: all 0.3s ease;*/ } /*响应式样式 */ @media (max-width: 480px) { .size-options { flex-direction: column; } .size-options select { margin-bottom: 1rem; /* 为选择框添加底部边距 */ } .custom-size-inputs { flex-direction: row; /* 输入框水平排列 */ justify-content: space-between; /* 输入框分别靠左右两端 */ width: 100%; /* 确保占据整行 */ margin-top: 0; /* 移除顶部边距 */ } .custom-size-inputs inputtypenumber { margin-bottom: 0; /* 移除底部边距 */ } } .footer { display: flex; justify-content: center; padding: 5px; color: #888; /* 灰色文字 */ font-size: 0.8em; /* 小号字体 */ border-top: 1px solid #ddd; /* 可选边框 */ } .footer a { color: #888; /* 灰色链接 */ text-decoration: none; /* 默认无下划线 */ transition: text-decoration 0.3s ease; /* 过渡效果 */ } .footer a:hover { text-decoration: underline; /* 鼠标悬停时显示下划线 */ } /style> script> document.addEventListener(DOMContentLoaded, function () { const submitButton document.getElementById(submitButton); const promptInput document.getElementById(prompt); const downloadBtn document.getElementById(downloadBtn); const historyBtn document.getElementById(historyBtn); const modal document.getElementById(historyModal); const closeBtn document.getElementsByClassName(close)0; const historyList document.getElementById(historyList); const clearHistoryBtn document.getElementById(clearHistoryBtn); const themeToggle document.getElementById(themeToggle); let history JSON.parse(localStorage.getItem(aiDrawingHistory)) || ; function updateHistory(prompt, imageUrl) { history.push({prompt: prompt, imageUrl: imageUrl, timestamp: new Date()}); localStorage.setItem(aiDrawingHistory, JSON.stringify(history)); renderHistory(); } const prompts 1girl,solo,cute,in glass,atmosphere_X,best quality,beautiful,extremely detailed,masterpiece,very aesthetic, a girl,,nahida,light,full body,symbol eye, nahida,1girl,fair_skin,in summer,day,in a meadow,sky,cirrus_fibratus,intense shadows,blonde hair,pleated_dress,collared_shirt,blue eyes,long hair,fang,smile, ((best quality)), ((masterpiece)),A Chinese couple in Hanfu embracing on an arch bridge, a sky full of rose petals, a romantic atmosphere, a huge moon, colorful clouds, clouds, ethereal, reflections of water, a mirage, a breeze,(Chinese ink style), simple background, flower, signature, no humans, sparkle, leaf, plant, white flower, black background, still life, embroidery, 1 girl,(orange light effect),hair ornament,jewelry,looking at viewer,flower,floating hair,water,underwater,air bubble,submerged, 80sDBA style, masterpiece,best quality,high quality,loli,1girl, solo, long hair, looking at viewer, blush, bangs, thighhighs, dress, ribbon, brown eyes, very long hair, closed mouth, standing, full body, yellow eyes, white hair, short sleeves, outdoors, sky,no shoes, day, puffy sleeves, looking back, cloud, from behind, white dress, white thighhighs, red ribbon, tree, blue sky, puffy short sleeves, petals, cherry blossoms, skirt hold,, 1 girl,Clothes in the shape of snowflake,render,technology, (best quality) (masterpiece), (highly in detailed), 4K,Official art, unit 8 k wallpaper, ultra detailed, masterpiece, best quality, extremely detailed,CG,low saturation, as style, line art, best quality,masterpiece,sculpture,wonderland,,chinese fairy tales,an old man,boiling tea,drink tea,a painting of history floating and curved in the background,mountain,white cloud,chinese style courtyard,pavilion,chinese tea mountains,, Chinese architecture, trees,,white hair ,, 1girl, absurdres, arrow_(symbol), ata-zhubo, bicycle, billboard, black_eyes, black_footwear, black_hair, blue_sky, bridge, building, car, cardigan, city, cityscape, commentary_request, crosswalk, day, fire_hydrant, folding_bicycle, grey_cardigan, highres, lamppost, loafers, motor_vehicle, necktie, original, overpass, power_lines, railing, red_necktie, red_skirt, road, road_sign, scenery, school_uniform, shoes, short_hair, sign, skirt, sky, solo, stairs, standing, street, traffic_cone, traffic_light, truck, utility_pole, vending_machine, Steep stone walls towered into the sky, thunderous waves crashed against the river bank, and the waves stirred up like thousands of piles of white snow., 1girl, solo, elf, golden eyes, glowing eyes, slit_pupils, silver hair, green gradient hair, long hair, blunt bangs, brown capelet, frilled shirt, long sleeves, green brooch, pouch, belt, brown gloves, upper body, (chibi:0.4), (close-up), (broken:1.3), half-closed eye, expressionless, from side, depth of field, fallen leaves, side light, gingko, tree, masterpiece,bestquality, line art,, flower, outdoors, sky, tree, no humans, window, bird, building, scenery, house,oil painting style, (masterpiece,top quality,best quality,official art,beautiful and aesthetic:1.2),gf-hd,1girl,loli,solo,long hair,lovely smilie,(wink),(blazer,white shirt,white blouse:2),cozy,(lace details),v,robinSR,love heart, moon,outdoors,full moon,night,flower,cherry blossoms,sky,tree,pink flower flying around,night sky,no humans,masterpiece,illustration,extremely fine and beautiful,perfect details,stream,, comic,bestquality, masterpiece, super details, fine fabrics, highly detailed eyes and face, extremely fine and detailed, perfect details, 1 girl, solo, long hair, bangs, rosy cheeks, pearl hair clips, strawberry blonde tresses, strawberry-shaped stud earrings, sweet lolita-style dress with berry prints, holding a basket of fresh strawberries, whimsical garden setting, sunny and bright, (comic),a girl, soft colors, long curly hair, ocean blue hair, delicate flower crown, shimmering hazel eyes, gentle smile, bohemian style dress, sunny beach background, headshot, bestquality, masterpiece, super details, fine fabrics, high detailed eyes and detailed face, comic, extremely fine and detailed, perfect details, 1girl, solo, long hair, bangs, rose pink eyes, long sleeves, frilly pastel dress, lace accessory, sweet smile, holding a pink macaron, cotton candy pink hair, hair ribbons, soft pink and white dress, fairy tale garden, pink flowers, balloons, ; const blobToBase64 (blob) > new Promise((resolve, reject) > { const reader new FileReader(); reader.onerror reject; reader.onload () > { resolve(reader.result); }; reader.readAsDataURL(blob); }); // 随机选择一个提示词 function getRandomPrompt() { const randomIndex Math.floor(Math.random() * prompts.length); return promptsrandomIndex; } // 随机提示词按钮 const randomButton document.getElementById(randomButton); randomButton.addEventListener(click, function () { const randomPrompt getRandomPrompt(); promptInput.value randomPrompt; promptInput.dispatchEvent(new Event(input)); // 触发 input 事件 }); function setupSizeOptions() { const sizeSelect document.getElementById(size-select); const widthInput document.getElementById(width-input); const heightInput document.getElementById(height-input); // 监听输入框的变化,限制最大值为1024 widthInput.addEventListener(input, function () { if (parseInt(this.value) > 1024) { this.value 1024; } }); heightInput.addEventListener(input, function () { if (parseInt(this.value) > 1024) { this.value 1024; } }); sizeSelect.addEventListener(change, function () { const selectedValue this.value; // 如果选择了自定义,则启用输入框 if (selectedValue custom) { widthInput.disabled false; heightInput.disabled false; return; } // 否则禁用输入框并根据选择的尺寸设置默认值 widthInput.disabled true; heightInput.disabled true; switch (selectedValue) { case 16x9-horizontal: widthInput.value 1024; heightInput.value 576; break; case 16x9-vertical: widthInput.value 576; heightInput.value 1024; break; case 4x3-horizontal: widthInput.value 1024; heightInput.value 768; break; case 4x3-vertical: widthInput.value 768; heightInput.value 1024; break; case 1x1: widthInput.value 1024; heightInput.value 1024; break; default: widthInput.value 1024; heightInput.value 576; break; } }); } setupSizeOptions() function renderHistory() { historyList.innerHTML ; history.forEach((item, index) > { const historyItem document.createElement(div); historyItem.className history-item; historyItem.innerHTML ` img src${item.imageUrl} alt${item.prompt}> div> span>${item.prompt}/span> br> small>${new Date(item.timestamp).toLocaleString()}/small> /div> div classhistory-item-buttons> button classredraw-btn tooltip data-index${index}>重绘span classtooltiptext>使用此提示词重新生成图片/span>/button> button classdelete-btn tooltip data-index${index}>删除span classtooltiptext>从历史记录中删除此项/span>/button> /div> `; historyList.appendChild(historyItem); }); } function deleteHistoryItem(index) { history.splice(index, 1); localStorage.setItem(aiDrawingHistory, JSON.stringify(history)); renderHistory(); } function clearHistory() { if (confirm(确定要清空所有历史记录吗?此操作不可撤销。)) { history ; localStorage.removeItem(aiDrawingHistory); renderHistory(); } } async function generateImage(prompt, width, height) { // 修改函数签名以接收宽度和高度 submitButton.disabled true; submitButton.textContent 正在创作...; document.querySelector(.loading-overlay).style.display flex; const model document.getElementById(model).value; const resolution { width: parseInt(width), // 使用从参数接收的宽度 height: parseInt(height) // 使用从参数接收的高度 }; try { const controller new AbortController(); const signal controller.signal; setTimeout(() > { controller.abort(); }, 300000); const response await fetch(`${window.location.origin}`, { // const response await fetch(`https://aidraw.foxhank.top`, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ model: model, prompt: prompt, resolution: resolution, upload: true }), signal: signal }); if (!response.ok) { throw new Error(`请求失败:${response.status} ${response.statusText}`); } // 由于历史记录功能,本地保存历史生成的图片会超过浏览器限额,所以使用图床存储历史记录 // 后期可能设一个开关,如果关闭开关就不上传到图床 // const responseData await response.json(); // 上传改为服务器端上传,返回一个图床路径 // 提取 imageUrl // const imageUrl responseData.imageUrl; // 读取响应的文本数据 // 将响应体转换为Blob const blob await response.blob(); // 将Blob转换为Base64编码的字符串 const imageUrl await blobToBase64(blob); document.getElementById(aiImage).src imageUrl; // document.getElementById(aiImage).src Image; updateHistory(prompt, imageUrl); downloadBtn.style.display block; } catch (error) { if (error.name AbortError) { alert(服务器连接超时,请稍后重试。); } else { console.error(Error:, error); alert(生成过程中发生错误,请重试。\n错误: + error.message + \n); } } finally { submitButton.textContent 开始创作; submitButton.disabled false; document.querySelector(.loading-overlay).style.display none; } } promptInput.addEventListener(input, function () { if (this.value.trim() ! ) { submitButton.classList.add(active); } else { submitButton.classList.remove(active); } }); submitButton.addEventListener(click, function (event) { event.preventDefault(); if (promptInput.value.trim() ) { alert(请输入描述词); return; } generateImage(promptInput.value.trim(), document.getElementById(width-input).value, document.getElementById(height-input).value); }); downloadBtn.addEventListener(click, function () { const image document.getElementById(aiImage); const link document.createElement(a); link.href image.src; link.download `ai-artwork-${new Date().toISOString()}.png`; document.body.appendChild(link); link.click(); document.body.removeChild(link); }); historyBtn.onclick function () { modal.style.display block; renderHistory(); } closeBtn.onclick function () { modal.style.display none; } window.onclick function (event) { if (event.target modal) { modal.style.display none; } } historyList.addEventListener(click, function (event) { if (event.target.classList.contains(redraw-btn)) { const index event.target.getAttribute(data-index); const prompt historyindex.prompt; promptInput.value prompt; modal.style.display none; generateImage(prompt); } else if (event.target.classList.contains(delete-btn)) { const index event.target.getAttribute(data-index); deleteHistoryItem(index); } }); clearHistoryBtn.addEventListener(click, clearHistory); themeToggle.addEventListener(click, function () { document.body.classList.toggle(dark-theme); themeToggle.textContent document.body.classList.contains(dark-theme) ? 🌞 : 🌙; localStorage.setItem(theme, document.body.classList.contains(dark-theme) ? dark : light); }); // 检查并应用保存的主题 if (localStorage.getItem(theme) dark) { document.body.classList.add(dark-theme); themeToggle.textContent 🌞; } // 添加键盘快捷键支持 document.addEventListener(keydown, function (event) { if (event.ctrlKey && event.key Enter) { submitButton.click(); } }); // 添加拖放支持 const dropZone document.querySelector(.image-container); dropZone.addEventListener(dragover, (e) > { e.preventDefault(); dropZone.style.border 2px dashed #4facfe; }); dropZone.addEventListener(dragleave, () > { dropZone.style.border none; }); dropZone.addEventListener(drop, (e) > { e.preventDefault(); dropZone.style.border none; const file e.dataTransfer.files0; if (file && file.type.startsWith(image/)) { const reader new FileReader(); reader.onload (e) > { document.getElementById(aiImage).src e.target.result; }; reader.readAsDataURL(file); } }); }); /script>/head>body>div classcontainer> div classcard> h1>AI绘画创作平台/h1> div classimage-container> img altAI生成的图片 idaiImage srcdata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg> div classloading-overlay> div classloading-spinner>/div> /div> /div> select idmodel> option valuedreamshaper-8-lcm>DreamShaper 8 LCM(容易出黑图)/option> option valuestable-diffusion-xl-base-1.0>Stable Diffusion XL Base 1.0(效果较好)/option> option valuestable-diffusion-xl-lightning>Stable Diffusion XL Lightning(效果一般 速度快)/option> option selected valueflux-1-schnell>flux-1-schnell(推荐用这个)/option> > /select> div classinput-group> input idprompt placeholder请输入你想要创作的画面描述... typetext> button classbutton random-btn idrandomButton>随机提示词/button> /div> !-- 添加尺寸选择功能 --> div classsize-options> label forsize-select>尺寸:/label> select idsize-select> option value16x9-horizontal>横屏 16:9/option> option value16x9-vertical>竖屏 16:9/option> option value4x3-horizontal>横屏 4:3/option> option value4x3-vertical>竖屏 4:3/option> option value1x1>正方形 1:1/option> option valuecustom>自定义/option> /select> !-- 自定义输入框 --> div classcustom-size-inputs> label forwidth-input>宽度/label> input disabled idwidth-input max1024 min1 placeholder宽度 typenumber value1024> label forheight-input>高度/label> input disabled idheight-input max1024 min1 placeholder高度 typenumber value576> /div> /div> div classbutton-group> button classsubmit-btn idsubmitButton typebutton>开始创作/button> button classdownload-btn iddownloadBtn styledisplay: none; typebutton>下载图片/button> button classhistory-btn idhistoryBtn typebutton>历史记录/button> /div> !-- footer classfooter> /br>/br> p>前端来自佬友小黑紫一枚:a hrefhttps://linux.do/u/jiu1/ target_blank>https://linux.do/u/jiu1//a> /p> /footer> --> /div>/div>div classmodal idhistoryModal> div classmodal-content> span classclose>×/span> h2>历史记录/h2> div idhistoryList>/div> button classclear-history-btn idclearHistoryBtn>清空历史记录/button> /div>/div>button classtheme-toggle idthemeToggle>🌙/button>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]