D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
novonote
/
Filename :
testeimagemJSR1.php
back
Copy
<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Gerador de Imagem</title> <style> body { font-family: Arial, sans-serif; padding: 20px; } .linha-campos { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; margin-bottom: 15px; } .campo-inline { display: flex; align-items: center; gap: 5px; } .campo-inline label { white-space: nowrap; } input[type="text"], input[type="number"], select { padding: 4px 6px; width: 100px; } .preview { display: inline-block; background: #f4f4f4; padding: 4px; border: 1px solid #ccc; } canvas { display: block; } </style> </head> <body> <h1>Gerador de Imagem com Saia e Frontões - JS</h1> <form id="formImagem"> <!-- Linha 1: cor, largura, altura --> <div class="linha-campos"> <div class="campo-inline"> <label for="cor">Cor (hex):</label> <input type="text" name="cor" id="cor" value="#4169e1" required> </div> <div class="campo-inline"> <label for="largura">Largura:</label> <input type="number" name="largura" id="largura" value="200" min="5" required> </div> <div class="campo-inline"> <label for="altura">Altura:</label> <input type="number" name="altura" id="altura" value="13" min="5" required> </div> </div> <!-- Linha 2: saias --> <div class="linha-campos"> <div class="campo-inline"> <label for="saiaEsq">Saia à esquerda:</label> <select name="saiaEsq" id="saiaEsq"> <option value="NAO">Não</option> <option value="SIM">Sim</option> </select> </div> <div class="campo-inline"> <label for="saiaDir">Saia à direita:</label> <select name="saiaDir" id="saiaDir"> <option value="NAO">Não</option> <option value="SIM">Sim</option> </select> </div> </div> <!-- Linha 3: frontões --> <div class="linha-campos"> <div class="campo-inline"> <label for="fronEsq">Frontão à esquerda:</label> <select name="fronEsq" id="fronEsq"> <option value="NAO">Não</option> <option value="SIM">Sim</option> </select> </div> <div class="campo-inline"> <label for="fronDir">Frontão à direita:</label> <select name="fronDir" id="fronDir"> <option value="NAO">Não</option> <option value="SIM">Sim</option> </select> </div> </div> <!-- Linha 4: meia esquadria --> <div class="linha-campos"> <div class="campo-inline"> <label for="meiaesquad">Meia esquadria:</label> <select name="meiaesquad" id="meiaesquad"> <option value="NAO">Não</option> <option value="SIM">Sim</option> </select> </div> </div> <!-- Botão --> <div style="margin-bottom: 10px;"> <button type="submit">Gerar Imagem</button> </div> </form> <!-- Preview --> <div class="preview"> <h4>Corte AA</h4> <canvas id="canvasPreview"></canvas> </div> <script> document.getElementById('formImagem').addEventListener('submit', function(e){ e.preventDefault(); gerarImagem(); }); function gerarImagem(){ const n = (id, min, def) => { const v = Number(document.getElementById(id).value); return Number.isFinite(v) ? Math.max(min, v) : def; }; const largura = n('largura', 5, 200); const altura = n('altura', 5, 13); const saiaEsq = document.getElementById('saiaEsq').value.toUpperCase(); const saiaDir = document.getElementById('saiaDir').value.toUpperCase(); const fronEsq = document.getElementById('fronEsq').value.toUpperCase(); const fronDir = document.getElementById('fronDir').value.toUpperCase(); const meiaEsquad = document.getElementById('meiaesquad').value.toUpperCase(); const corHexRaw = document.getElementById('cor').value.trim(); function hexToRgb(hex){ let h = hex.replace(/^#/, '').toLowerCase(); if (/^[0-9a-f]{3}$/.test(h)) h = h.split('').map(c => c + c).join(''); if (!/^[0-9a-f]{6}$/.test(h)) return [65,105,225]; return [ parseInt(h.slice(0,2),16), parseInt(h.slice(2,4),16), parseInt(h.slice(4,6),16) ]; } const [r,g,b] = hexToRgb(corHexRaw); const cor = `rgb(${r},${g},${b})`; const esp = 2; const wSaiaEsq = (saiaEsq==='SIM') ? altura : 0; const hSaiaEsq = (saiaEsq==='SIM') ? Math.floor(largura/3) : 0; const wSaiaDir = (saiaDir==='SIM') ? altura : 0; const hSaiaDir = (saiaDir==='SIM') ? Math.floor(largura/3) : 0; const wFronEsq = (fronEsq==='SIM') ? Math.floor(altura*0.9) : 0; const hFronEsq = (fronEsq==='SIM') ? Math.floor(largura/3) : 0; const wFronDir = (fronDir==='SIM') ? Math.floor(altura*0.9) : 0; const hFronDir = (fronDir==='SIM') ? Math.floor(largura/3) : 0; const extraTopo = Math.max(hFronEsq, hFronDir); const extraBaixo = Math.max(hSaiaEsq, hSaiaDir); const extraEsq = wSaiaEsq + (fronEsq==='SIM' ? altura : 0); const extraDir = wSaiaDir + (fronDir==='SIM' ? altura : 0); const canvas = document.getElementById('canvasPreview'); canvas.width = largura + extraEsq + extraDir + 2*esp; canvas.height = extraTopo + altura + extraBaixo + 2*esp; const ctx = canvas.getContext('2d'); ctx.fillStyle = '#fff'; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.lineWidth = esp; ctx.strokeStyle = cor; const origX = esp + extraEsq; const origY = esp + extraTopo; // Saia esquerda com meia esquadria if (saiaEsq === 'SIM') { const xL = origX - wSaiaEsq + altura; const xR = origX + altura; const yTopBody = origY + altura; const yBottom = yTopBody + hSaiaEsq; if (meiaEsquad === 'SIM') { // borda esquerda ctx.beginPath(); ctx.moveTo(xL, yTopBody); ctx.lineTo(xL, yBottom); ctx.stroke(); // borda inferior ctx.beginPath(); ctx.moveTo(xL, yBottom); ctx.lineTo(xR, yBottom); ctx.stroke(); // borda direita ctx.beginPath(); ctx.moveTo(xR, yTopBody); ctx.lineTo(xR, yBottom); ctx.stroke(); // diagonal ctx.beginPath(); ctx.moveTo(origX, origY); ctx.lineTo(origX + altura, origY + altura); ctx.stroke(); // linha vertical acima da diagonal (correção solicitada) ctx.beginPath(); ctx.moveTo(origX, origY); ctx.lineTo(origX, origY + altura); ctx.stroke(); } else { ctx.strokeRect(xL, yTopBody, xR - xL, hSaiaEsq); } } const rightX = origX + largura; const baseY = origY + altura; // Retângulo principal ctx.beginPath(); ctx.moveTo((saiaEsq==='SIM' && meiaEsquad==='SIM') ? (origX + altura) : origX, origY); ctx.lineTo(rightX, origY); ctx.stroke(); ctx.beginPath(); ctx.moveTo(rightX, origY); ctx.lineTo(rightX, baseY); ctx.stroke(); ctx.beginPath(); ctx.moveTo((saiaEsq==='SIM' && meiaEsquad==='SIM') ? (origX + altura) : origX, baseY); ctx.lineTo(rightX, baseY); ctx.stroke(); ctx.beginPath(); ctx.moveTo((saiaEsq==='SIM' && meiaEsquad==='SIM') ? origX : origX, (saiaEsq==='SIM' && meiaEsquad==='SIM') ? (origY + altura) : origY); ctx.lineTo(origX, baseY); ctx.stroke(); // Saia direita if (saiaDir==='SIM') { const yA = origY + altura; const xR = rightX; const xL = xR - wSaiaDir; ctx.strokeRect(xL, yA, wSaiaDir, hSaiaDir); } // Frontões if (fronEsq==='SIM') ctx.strokeRect(origX, origY - hFronEsq, wFronEsq, hFronEsq); if (fronDir==='SIM') ctx.strokeRect(rightX - wFronDir, origY - hFronDir, wFronDir, hFronDir); } window.addEventListener('load', gerarImagem); </script> </body> </html>