{"id":15,"date":"2026-05-01T18:00:53","date_gmt":"2026-05-01T18:00:53","guid":{"rendered":"https:\/\/myimagetoprompt.com\/image-to-prompt\/"},"modified":"2026-05-11T00:23:25","modified_gmt":"2026-05-11T00:23:25","slug":"image-to-prompt","status":"publish","type":"page","link":"https:\/\/myimagetoprompt.com\/es\/image-to-prompt\/","title":{"rendered":""},"content":{"rendered":"\n<div style=\"background:#0d0d0d;min-height:100vh;\">\n\n<!-- Tool Header -->\n<section style=\"background:radial-gradient(ellipse at 50% 0%,rgba(124,58,237,.15) 0%,transparent 60%),#0d0d0d;padding:80px 20px 60px;text-align:center;\">\n\n<div style=\"max-width:700px;margin:0 auto;\">\n\n<span style=\"display:inline-block;background:rgba(124,58,237,.2);color:#a78bfa;border:1px solid rgba(124,58,237,.4);border-radius:50px;padding:5px 16px;font-size:.8rem;font-weight:600;margin-bottom:20px;\">\nFree AI Tool\n<\/span>\n\n<h1 style=\"color:#fff;font-size:clamp(1.8rem,4vw,3rem);font-weight:800;margin-bottom:16px;font-family:Poppins,sans-serif;\">\nImage to Prompt\n<\/h1>\n\n<p style=\"color:#9ca3af;font-size:1rem;max-width:550px;margin:0 auto 32px;\">\nConvert any image into a detailed, accurate AI prompt for Midjourney, SDXL, Flux and more.\n<\/p>\n\n<!-- Upload Box -->\n<div id=\"mitp-upload-zone\"\nstyle=\"\nbackground:#1a1a1a;\nborder:2px dashed #7c3aed;\nborder-radius:16px;\npadding:48px 24px;\nmax-width:600px;\nmargin:0 auto 24px;\ncursor:pointer;\n\">\n\n<div style=\"font-size:2.5rem;margin-bottom:12px;\">&#128444;<\/div>\n\n<p style=\"color:#9ca3af;\">\nDrop image here or\n<span style=\"color:#a78bfa;font-weight:600;\">\nclick to upload\n<\/span>\n<\/p>\n\n<p style=\"color:#555;font-size:.8rem;margin-top:6px;\">\nJPG, PNG, WebP, GIF \u2022 max 10MB\n<\/p>\n\n<\/div>\n\n<!-- Text Input -->\n<div id=\"mitp-text-zone\"\nstyle=\"display:none;max-width:600px;margin:0 auto 24px;\">\n\n<textarea\nid=\"mitp-text-input\"\nplaceholder=\"Describe the image or scene...\"\nstyle=\"\nwidth:100%;\nmin-height:140px;\nborder-radius:14px;\nborder:1px solid rgba(124,58,237,.6);\nbackground:#1a1a1a;\ncolor:#e5e7eb;\npadding:12px 14px;\nfont-size:14px;\nresize:vertical;\nbox-sizing:border-box;\n\"><\/textarea>\n\n<\/div>\n\n<!-- Tabs -->\n<div style=\"display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:24px;\">\n\n<button id=\"tab-image\"\nonclick=\"mitpSwitchTab('image')\"\nstyle=\"background:linear-gradient(135deg,#7c3aed,#4f46e5);color:#fff;border:none;padding:10px 24px;border-radius:50px;font-weight:600;cursor:pointer;\">\n\ud83d\udcf7 Image \u2192 Prompt\n<\/button>\n\n<button id=\"tab-text\"\nonclick=\"mitpSwitchTab('text')\"\nstyle=\"background:#1a1a1a;color:#9ca3af;border:1px solid #2a2a2a;padding:10px 24px;border-radius:50px;font-weight:600;cursor:pointer;\">\n\ud83d\udcc4 Text \u2192 Prompt\n<\/button>\n\n<\/div>\n\n<!-- Modes -->\n<div style=\"display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:32px;\">\n\n<span data-mode=\"general\" onclick=\"mitpSetMode('general',this)\"\nstyle=\"background:#7c3aed;color:#fff;padding:6px 16px;border-radius:50px;font-size:.8rem;font-weight:600;cursor:pointer;\">\nGeneral\n<\/span>\n\n<span data-mode=\"midjourney\"  onclick=\"mitpSetMode('midjourney',this)\"\nstyle=\"background:#1a1a1a;color:#9ca3af;border:1px solid #2a2a2a;padding:6px 16px;border-radius:50px;font-size:.8rem;cursor:pointer;\">\nMidjourney\n<\/span>\n\n<span data-mode=\"sdxl\" onclick=\"mitpSetMode('sdxl',this)\"\nstyle=\"background:#1a1a1a;color:#9ca3af;border:1px solid #2a2a2a;padding:6px 16px;border-radius:50px;font-size:.8rem;cursor:pointer;\">\nSDXL\n<\/span>\n\n<span data-mode=\"flux\" onclick=\"mitpSetMode('flux',this)\"\nstyle=\"background:#1a1a1a;color:#9ca3af;border:1px solid #2a2a2a;padding:6px 16px;border-radius:50px;font-size:.8rem;cursor:pointer;\">\nFlux\n<\/span>\n\n<span data-mode=\"dalle\" onclick=\"mitpSetMode('dalle',this)\"\nstyle=\"background:#1a1a1a;color:#9ca3af;border:1px solid #2a2a2a;padding:6px 16px;border-radius:50px;font-size:.8rem;cursor:pointer;\">\nDALL\u00b7E 3\n<\/span>\n\n<\/div>\n\n<!-- Status -->\n<p id=\"mitp-status\"\nstyle=\"color:#a78bfa;font-size:.9rem;min-height:20px;margin-bottom:12px;\">\n<\/p>\n\n<!-- Generate -->\n<button\nid=\"mitp-generate\"\nonclick=\"mitpGenerate()\"\nstyle=\"\nbackground:linear-gradient(135deg,#7c3aed,#4f46e5);\ncolor:#fff;\nborder:none;\npadding:14px 40px;\nborder-radius:50px;\nfont-size:1rem;\nfont-weight:700;\ncursor:pointer;\nbox-shadow:0 8px 32px rgba(124,58,237,.4);\n\">\n\u26a1 Generate Prompt\n<\/button>\n\n<\/div>\n<\/section>\n\n<!-- Output -->\n<section style=\"padding:40px 20px;background:#111;\">\n\n<div style=\"max-width:700px;margin:0 auto;\">\n\n<div style=\"\nbackground:#1a1a1a;\nborder:1px solid #2a2a2a;\nborder-radius:16px;\npadding:24px;\n\">\n\n<div style=\"display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;\">\n\n<span style=\"\ncolor:#a78bfa;\nfont-size:.85rem;\nfont-weight:600;\ntext-transform:uppercase;\nletter-spacing:1px;\n\">\nGenerated Prompt\n<\/span>\n\n<button\nonclick=\"mitpCopy()\"\nstyle=\"\nbackground:transparent;\ncolor:#a78bfa;\nborder:1px solid #7c3aed;\npadding:6px 14px;\nborder-radius:50px;\nfont-size:.8rem;\nfont-weight:600;\ncursor:pointer;\n\">\n\ud83d\udccb Copy\n<\/button>\n\n<\/div>\n\n<p id=\"mitp-output\"\nstyle=\"\ncolor:#e5e7eb;\nfont-size:.9rem;\nwhite-space:pre-wrap;\nword-break:break-word;\n\">\nYour AI-generated prompt will appear here&#8230;\n<\/p>\n\n<\/div>\n<\/div>\n<\/section>\n\n\n<script>\n\nlet mitpFile = null;\nlet mitpMode = 'general';\nlet mitpTab = 'image';\n\n\/* ---------------- STATUS ---------------- *\/\n\nfunction setStatus(msg, color) {\n    const el = document.getElementById('mitp-status');\n    el.textContent = msg;\n    el.style.color = color || '#a78bfa';\n}\n\n\/* ---------------- BUTTON LOCK ---------------- *\/\n\nfunction setGenerateDisabled(state) {\n    const btn = document.getElementById('mitp-generate');\n    btn.disabled = state;\n    btn.style.opacity = state ? '0.5' : '1';\n}\n\n\/* ---------------- TAB SWITCH ---------------- *\/\n\nfunction mitpSwitchTab(type) {\n\n    mitpTab = type;\n\n    const upload = document.getElementById('mitp-upload-zone');\n    const text = document.getElementById('mitp-text-zone');\n\n    const imgBtn = document.getElementById('tab-image');\n    const txtBtn = document.getElementById('tab-text');\n\n    if (type === 'image') {\n\n        upload.style.display = 'block';\n        text.style.display = 'none';\n\n        imgBtn.style.background = 'linear-gradient(135deg,#7c3aed,#4f46e5)';\n        imgBtn.style.color = '#fff';\n\n        txtBtn.style.background = '#1a1a1a';\n        txtBtn.style.color = '#9ca3af';\n\n    } else {\n\n        upload.style.display = 'none';\n        text.style.display = 'block';\n\n        txtBtn.style.background = 'linear-gradient(135deg,#7c3aed,#4f46e5)';\n        txtBtn.style.color = '#fff';\n\n        imgBtn.style.background = '#1a1a1a';\n        imgBtn.style.color = '#9ca3af';\n    }\n}\n\nwindow.mitpSwitchTab = mitpSwitchTab;\n\n\/* ---------------- MODE ---------------- *\/\n\nfunction mitpSetMode(mode, el) {\n\n    mitpMode = mode;\n\n    document.querySelectorAll('[data-mode]').forEach(s => {\n        s.style.background = '#1a1a1a';\n        s.style.color = '#9ca3af';\n    });\n\n    el.style.background = '#7c3aed';\n    el.style.color = '#fff';\n}\n\nwindow.mitpSetMode = mitpSetMode;\n\n\/* ---------------- UPLOAD ---------------- *\/\n\nfunction bindUpload() {\n\n    const zone = document.getElementById('mitp-upload-zone');\n\n    zone.addEventListener('click', () => {\n\n        const inp = document.createElement('input');\n        inp.type = 'file';\n        inp.accept = 'image\/*';\n\n        inp.onchange = e => {\n            mitpFile = e.target.files[0];\n\n            zone.innerHTML = `\n                <img decoding=\"async\" src=\"${URL.createObjectURL(mitpFile)}\"\n                style=\"max-width:300px;border-radius:12px;\">\n                <p style=\"color:#4ade80\">${mitpFile.name}<\/p>\n            `;\n        };\n\n        inp.click();\n    });\n}\n\n\/* ---------------- COPY ---------------- *\/\n\nfunction mitpCopy() {\n\n    const text = document.getElementById('mitp-output').textContent;\n\n    navigator.clipboard.writeText(text);\n\n    setStatus('Copied', '#4ade80');\n}\n\nwindow.mitpCopy = mitpCopy;\n\n\/* ---------------- GENERATE ---------------- *\/\n\nfunction mitpGenerate() {\n\n    \/* ---------- TEXT MODE ---------- *\/\n\n    if (mitpTab === 'text') {\n\n        const promptText = document.getElementById('mitp-text-input').value.trim();\n\n        if (!promptText) {\n            setStatus('Enter description first', '#f87171');\n            return;\n        }\n\n        setGenerateDisabled(true);\n        setStatus('Processing...');\n\n        fetch('\/wp-json\/mitp\/v1\/text-prompt', {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application\/json'\n            },\n            body: JSON.stringify({\n                text: promptText,\n                mode: mitpMode\n            })\n        })\n        .then(r => r.json())\n        .then(data => {\n\n            if (!data.success) {\n                throw new Error(data.message || 'Failed');\n            }\n\n            document.getElementById('mitp-output').textContent = data.result;\n\n            setStatus('Done', '#4ade80');\n\n            setGenerateDisabled(false);\n        })\n        .catch(err => {\n\n            setGenerateDisabled(false);\n\n            setStatus(err.message, '#f87171');\n        });\n\n        return;\n    }\n\n    \/* ---------- IMAGE MODE ---------- *\/\n\n    if (!mitpFile) {\n        setStatus('Upload image first', '#f87171');\n        return;\n    }\n\n    setGenerateDisabled(true);\n    setStatus('Processing...');\n\n    const form = new FormData();\n    form.append('image', mitpFile);\n    form.append('mode', mitpMode);\n\n    fetch('\/wp-json\/mitp\/v1\/create-job', {\n        method: 'POST',\n        body: form\n    })\n    .then(r => r.json())\n    .then(data => {\n\n        if (!data.success) throw new Error(data.message);\n\n        poll(data.job_id);\n    })\n    .catch(err => {\n        setGenerateDisabled(false);\n        setStatus(err.message, '#f87171');\n    });\n}\n\nwindow.mitpGenerate = mitpGenerate;\n\n\/* ---------------- POLLING ---------------- *\/\n\nfunction poll(jobId) {\n\n    const interval = setInterval(() => {\n\n        fetch(`\/wp-json\/mitp\/v1\/status?job_id=${jobId}`)\n        .then(r => r.json())\n        .then(data => {\n\n            if (!data.success) return;\n\n            if (data.status === 'done') {\n\n                clearInterval(interval);\n\n                document.getElementById('mitp-output').textContent = data.result;\n\n                setStatus('Done', '#4ade80');\n\n                setGenerateDisabled(false);\n            }\n\n            if (data.status === 'error') {\n\n                clearInterval(interval);\n\n                setStatus(data.result, '#f87171');\n\n                setGenerateDisabled(false);\n            }\n        });\n\n    }, 2000);\n}\n\n\/* ---------------- INIT ---------------- *\/\n\ndocument.addEventListener('DOMContentLoaded', () => {\n\n    bindUpload();\n    mitpSwitchTab('image');\n});\n<\/script>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Free AI Tool Image to Prompt Convert any image into a detailed, accurate AI prompt for Midjourney, SDXL, Flux and more. &#128444; Drop image here or click to upload JPG, PNG, WebP, GIF \u2022 max 10MB \ud83d\udcf7 Image \u2192 Prompt \ud83d\udcc4 Text \u2192 Prompt General Midjourney SDXL Flux DALL\u00b7E 3 \u26a1 Generate Prompt Generated Prompt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/myimagetoprompt.com\/es\/wp-json\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/myimagetoprompt.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/myimagetoprompt.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/myimagetoprompt.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/myimagetoprompt.com\/es\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":43,"href":"https:\/\/myimagetoprompt.com\/es\/wp-json\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":159,"href":"https:\/\/myimagetoprompt.com\/es\/wp-json\/wp\/v2\/pages\/15\/revisions\/159"}],"wp:attachment":[{"href":"https:\/\/myimagetoprompt.com\/es\/wp-json\/wp\/v2\/media?parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}