sistema/painel/paginas/simulador/gerar_ia.php
Endpoint que usa OpenAI para gerar uma imagem simulada da prótese a partir da foto original.
Endpoint que usa OpenAI para gerar uma imagem simulada da prótese a partir da foto original.
Dependências observadas:
Conexão PDO / configurações globaisOpenAIBanco de dados
Endpoint IA / geração de imagem
Simulador
272
| Linha | Código | Explicação técnica |
|---|---|---|
| 1 | <?php | Abre um bloco PHP. A partir daqui o arquivo passa a executar lógica no servidor. |
| 2 | require_once("../../../conexao.php"); | Importa `../../../conexao.php` para disponibilizar conexão, sessão, funções utilitárias ou validações necessárias ao restante do fluxo. |
| 3 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 4 | $tabela = 'simulacoes_protese'; | Centraliza o nome da tabela `simulacoes_protese` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo. |
| 5 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 6 | $id = @$_POST['id']; | Lê dados de entrada vindos da requisição, sessão ou upload e normaliza o valor para uso no restante da rotina. |
| 7 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 8 | if($id == ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 9 | echo 'ID da simulação não informado'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 10 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 11 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 12 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 13 | $query = $pdo->query("SELECT s.*, c.nome as nome_cliente, p.modelo, p.cor, p.densidade, p.tamanho | Executa uma consulta direta no banco. É um ponto que merece atenção extra quando houver dados vindos do usuário. |
| 14 | FROM $tabela s | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 15 | INNER JOIN clientes c ON s.cliente = c.id | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 16 | INNER JOIN proteses p ON s.id_protese = p.id | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 17 | WHERE s.id = '$id'"); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 18 | $res = $query->fetchAll(PDO::FETCH_ASSOC); | Lê o resultado retornado pelo banco e o converte para uma estrutura PHP que o restante do arquivo consegue consumir. |
| 19 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 20 | if(@count($res) == 0){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 21 | echo 'Registro não encontrado'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 22 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 23 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 24 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 25 | $modelo = trim(@$res[0]['modelo']); | Inicializa `$modelo` já removendo espaços nas pontas, reduzindo ruído antes de validar ou salvar. |
| 26 | $cor = trim(@$res[0]['cor']); | Inicializa `$cor` já removendo espaços nas pontas, reduzindo ruído antes de validar ou salvar. |
| 27 | $densidade = trim(@$res[0]['densidade']); | Inicializa `$densidade` já removendo espaços nas pontas, reduzindo ruído antes de validar ou salvar. |
| 28 | $tamanho = trim(@$res[0]['tamanho']); | Inicializa `$tamanho` já removendo espaços nas pontas, reduzindo ruído antes de validar ou salvar. |
| 29 | $observacoes = trim(@$res[0]['observacoes']); | Inicializa `$observacoes` já removendo espaços nas pontas, reduzindo ruído antes de validar ou salvar. |
| 30 | $foto_original = trim(@$res[0]['foto_original']); | Inicializa `$foto_original` já removendo espaços nas pontas, reduzindo ruído antes de validar ou salvar. |
| 31 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 32 | $query2 = $pdo->query("SELECT * FROM config LIMIT 1"); | Executa uma consulta direta no banco. É um ponto que merece atenção extra quando houver dados vindos do usuário. |
| 33 | $res2 = $query2->fetchAll(PDO::FETCH_ASSOC); | Lê o resultado retornado pelo banco e o converte para uma estrutura PHP que o restante do arquivo consegue consumir. |
| 34 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 35 | if(@count($res2) == 0){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 36 | echo 'Configurações não encontradas'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 37 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 38 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 39 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 40 | $openai_key = trim(@$res2[0]['openai_key']); | Inicializa `$openai_key` já removendo espaços nas pontas, reduzindo ruído antes de validar ou salvar. |
| 41 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 42 | if($openai_key == ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 43 | echo 'OpenAI Key não cadastrada'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 44 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 45 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 46 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 47 | if($foto_original == ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 48 | echo 'Nenhuma foto original enviada'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 49 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 50 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 51 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 52 | $pasta_upload = __DIR__ . '/../../images/simulacoes/'; | Define a variável `$pasta_upload`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 53 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 54 | if(!is_dir($pasta_upload)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 55 | echo 'Pasta de imagens da simulação não encontrada'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 56 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 57 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 58 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 59 | if(!is_readable($pasta_upload)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 60 | echo 'Pasta de imagens da simulação sem permissão de leitura'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 61 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 62 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 63 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 64 | if(!is_writable($pasta_upload)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 65 | echo 'Pasta de imagens da simulação sem permissão de escrita'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 66 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 67 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 68 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 69 | $caminho_foto = $pasta_upload . $foto_original; | Define a variável `$caminho_foto`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 70 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 71 | if(!file_exists($caminho_foto)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 72 | echo 'Arquivo da foto original não encontrado'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 73 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 74 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 75 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 76 | if(!is_file($caminho_foto)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 77 | echo 'Arquivo da foto original inválido'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 78 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 79 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 80 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 81 | if(!is_readable($caminho_foto)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 82 | echo 'Arquivo da foto original sem permissão de leitura'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 83 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 84 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 85 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 86 | $extensao = strtolower(pathinfo($caminho_foto, PATHINFO_EXTENSION)); | Define a variável `$extensao`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 87 | $mime = 'image/jpeg'; | Define `$mime` com um valor literal usado como configuração local do arquivo. |
| 88 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 89 | if($extensao == 'png'){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 90 | $mime = 'image/png'; | Define `$mime` com um valor literal usado como configuração local do arquivo. |
| 91 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 92 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 93 | if($extensao == 'webp'){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 94 | $mime = 'image/webp'; | Define `$mime` com um valor literal usado como configuração local do arquivo. |
| 95 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 96 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 97 | $arquivo_curl = new CURLFile($caminho_foto, $mime, basename($caminho_foto)); | Define a variável `$arquivo_curl`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 98 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 99 | /* | Comentário do código. Serve para contextualizar o bloco seguinte para quem fizer manutenção. |
| 100 | Prompt travado do simulador | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 101 | Seguir exatamente o que o profissional definiu | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 102 | */ | Comentário do código. Serve para contextualizar o bloco seguinte para quem fizer manutenção. |
| 103 | $prompt = "Edite a imagem enviada criando uma simulacao fotografica profissional de protese capilar. "; | Define `$prompt` com um valor literal usado como configuração local do arquivo. |
| 104 | $prompt .= "Mantenha obrigatoriamente o mesmo rosto, expressao, angulo, proporcao da cabeca, fundo e enquadramento da foto original. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 105 | $prompt .= "Nao alterar identidade da pessoa. Nao alterar sobrancelhas. Nao alterar barba. Nao alterar roupa. Nao alterar iluminacao de forma artificial. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 106 | $prompt .= "A simulacao deve parecer resultado real de aplicacao profissional em clinica ou barbearia especializada. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 107 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 108 | $prompt .= "REGRA PRINCIPAL OBRIGATORIA: a simulacao deve seguir exatamente o que o profissional definiu no sistema. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 109 | $prompt .= "Nao inventar outra cor. Nao inventar outra densidade. Nao inventar outro modelo. Nao suavizar grisalho. Nao reduzir percentual de branco. Nao aumentar percentual de branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 110 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 111 | $prompt .= "Sugestao de protese definida pelo profissional: " . $modelo . ". "; | Manipula uma variável PHP usada na construção do fluxo. |
| 112 | $prompt .= "Cor detectada definida pelo profissional: " . $cor . ". "; | Manipula uma variável PHP usada na construção do fluxo. |
| 113 | $prompt .= "Densidade definida pelo profissional: " . $densidade . ". "; | Manipula uma variável PHP usada na construção do fluxo. |
| 114 | $prompt .= "Tamanho informado: " . $tamanho . ". "; | Manipula uma variável PHP usada na construção do fluxo. |
| 115 | $prompt .= "Observacoes do profissional: " . $observacoes . ". "; | Manipula uma variável PHP usada na construção do fluxo. |
| 116 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 117 | $prompt .= "Modelos permitidos no sistema: Micropele 0.04, Micropele 0.06, Micropele 0.08, Micropele 0.10. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 118 | $prompt .= "Usar obrigatoriamente e exatamente o modelo definido pelo profissional, sem substituicao. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 119 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 120 | $prompt .= "Escala profissional de cores permitidas com percentual de branco: "; | Manipula uma variável PHP usada na construção do fluxo. |
| 121 | $prompt .= "#1B Preto natural. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 122 | $prompt .= "#1B10 Preto natural + 10% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 123 | $prompt .= "#1B20 Preto natural + 20% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 124 | $prompt .= "#1B30 Preto natural + 30% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 125 | $prompt .= "#1B40 Preto natural + 40% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 126 | $prompt .= "#1B50 Preto natural + 50% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 127 | $prompt .= "#1B60 Preto natural + 60% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 128 | $prompt .= "#2 Castanho escuro. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 129 | $prompt .= "#210 Castanho escuro + 10% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 130 | $prompt .= "#220 Castanho escuro + 20% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 131 | $prompt .= "#230 Castanho escuro + 30% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 132 | $prompt .= "#240 Castanho escuro + 40% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 133 | $prompt .= "#250 Castanho escuro + 50% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 134 | $prompt .= "#3 Castanho medio. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 135 | $prompt .= "#310 Castanho medio + 10% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 136 | $prompt .= "#320 Castanho medio + 20% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 137 | $prompt .= "#330 Castanho medio + 30% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 138 | $prompt .= "#340 Castanho medio + 40% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 139 | $prompt .= "#4 Castanho. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 140 | $prompt .= "#410 Castanho + 10% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 141 | $prompt .= "#420 Castanho + 20% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 142 | $prompt .= "#430 Castanho + 30% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 143 | $prompt .= "#440 Castanho + 40% branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 144 | $prompt .= "#5 Castanho claro. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 145 | $prompt .= "#6 Loiro escuro. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 146 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 147 | $prompt .= "Se a cor definida pelo profissional tiver percentual de branco, esse percentual deve aparecer visualmente na simulacao. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 148 | $prompt .= "Exemplo: se a cor definida for #1B30, a simulacao deve mostrar preto natural com aproximadamente 30% de fios brancos ou grisalhos visiveis. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 149 | $prompt .= "Exemplo: se a cor definida for #220, a simulacao deve mostrar castanho escuro com aproximadamente 20% de fios brancos ou grisalhos visiveis. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 150 | $prompt .= "Exemplo: se a cor definida for #340, a simulacao deve mostrar castanho medio com aproximadamente 40% de fios brancos ou grisalhos visiveis. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 151 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 152 | $prompt .= "A IA deve respeitar obrigatoriamente o grisalho definido pelo profissional na cor detectada. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 153 | $prompt .= "Nao transformar cor grisalha em cor solida. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 154 | $prompt .= "Nao remover os fios brancos quando houver percentual de branco definido. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 155 | $prompt .= "Nao adicionar fios brancos quando a cor definida nao tiver percentual de branco. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 156 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 157 | $prompt .= "Densidades permitidas no sistema: 80%, 100%, 130%, 150%. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 158 | $prompt .= "Usar obrigatoriamente a densidade exatamente como informada pelo profissional, sem alterar volume para mais ou para menos. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 159 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 160 | $prompt .= "Requisitos visuais obrigatorios: "; | Manipula uma variável PHP usada na construção do fluxo. |
| 161 | $prompt .= "resultado extremamente natural, realista e profissional. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 162 | $prompt .= "Respeitar linha frontal compativel com o caso real. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 163 | $prompt .= "Respeitar direcao dos fios, implantacao, volume e cobertura coerentes com o modelo e densidade definidos. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 164 | $prompt .= "Cobertura uniforme e acabamento invisivel na base. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 165 | $prompt .= "Sem exagero de volume. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 166 | $prompt .= "Sem aparencia de peruca. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 167 | $prompt .= "Sem brilho plastico. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 168 | $prompt .= "Sem bordas aparentes. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 169 | $prompt .= "Nao inserir texto, marca dagua, moldura, elementos extras ou fundo novo. "; | Manipula uma variável PHP usada na construção do fluxo. |
| 170 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 171 | $prompt .= "Resumo final obrigatorio: obedecer exatamente a cor detectada, inclusive percentual de branco, obedecer exatamente a densidade, e obedecer exatamente a sugestao de protese definida pelo profissional."; | Manipula uma variável PHP usada na construção do fluxo. |
| 172 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 173 | $dados = array( | Define a variável `$dados`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 174 | 'model' => 'gpt-image-1', | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 175 | 'prompt' => $prompt, | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 176 | 'size' => '1024x1536', | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 177 | 'quality' => 'medium', | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 178 | 'image' => $arquivo_curl | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 179 | ); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 180 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 181 | $ch = curl_init(); | Define a variável `$ch`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 182 | curl_setopt($ch, CURLOPT_URL, "https://api.openai.com/v1/images/edits"); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 183 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 184 | curl_setopt($ch, CURLOPT_POST, true); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 185 | curl_setopt($ch, CURLOPT_HTTPHEADER, array( | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 186 | "Authorization: Bearer " . $openai_key | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 187 | )); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 188 | curl_setopt($ch, CURLOPT_POSTFIELDS, $dados); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 189 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 190 | $resposta = curl_exec($ch); | Define a variável `$resposta`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 191 | $http = curl_getinfo($ch, CURLINFO_HTTP_CODE); | Define a variável `$http`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 192 | $erro = curl_error($ch); | Define a variável `$erro`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 193 | curl_close($ch); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 194 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 195 | if($erro != ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 196 | echo 'Erro ao gerar imagem: ' . $erro; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 197 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 198 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 199 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 200 | if($resposta == ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 201 | echo 'Resposta vazia da IA'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 202 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 203 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 204 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 205 | $resposta_decodificada = json_decode($resposta, true); | Define a variável `$resposta_decodificada`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 206 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 207 | if($http != 200){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 208 | $mensagem_erro = 'Erro ao gerar imagem'; | Define `$mensagem_erro` com um valor literal usado como configuração local do arquivo. |
| 209 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 210 | if(isset($resposta_decodificada['error']['message'])){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 211 | $mensagem_erro = $resposta_decodificada['error']['message']; | Define a variável `$mensagem_erro`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 212 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 213 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 214 | echo $mensagem_erro; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 215 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 216 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 217 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 218 | if(!isset($resposta_decodificada['data'][0]['b64_json'])){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 219 | echo 'Resposta da IA inválida'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 220 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 221 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 222 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 223 | $imagem_base64_saida = $resposta_decodificada['data'][0]['b64_json']; | Define a variável `$imagem_base64_saida`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 224 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 225 | if($imagem_base64_saida == ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 226 | echo 'Imagem gerada inválida'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 227 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 228 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 229 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 230 | $imagem_binaria = base64_decode($imagem_base64_saida); | Define a variável `$imagem_binaria`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 231 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 232 | if($imagem_binaria === false || $imagem_binaria == ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 233 | echo 'Erro ao decodificar imagem gerada'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 234 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 235 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 236 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 237 | $nome_img = md5(uniqid()) . '.png'; | Define a variável `$nome_img`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 238 | $caminho = $pasta_upload . $nome_img; | Define a variável `$caminho`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 239 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 240 | $salvou_imagem = file_put_contents($caminho, $imagem_binaria); | Define a variável `$salvou_imagem`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 241 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 242 | if($salvou_imagem === false){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 243 | echo 'Erro ao salvar imagem gerada'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 244 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 245 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 246 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 247 | if(!file_exists($caminho)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 248 | echo 'Arquivo da imagem gerada não foi gravado'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 249 | exit(); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 250 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 251 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 252 | $query3 = $pdo->query("SELECT * FROM $tabela WHERE id = '$id'"); | Centraliza o nome da tabela `$id` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo. |
| 253 | $res3 = $query3->fetchAll(PDO::FETCH_ASSOC); | Lê o resultado retornado pelo banco e o converte para uma estrutura PHP que o restante do arquivo consegue consumir. |
| 254 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 255 | if(@count($res3) > 0){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 256 | $imagem_antiga = $res3[0]['imagem_simulada']; | Define a variável `$imagem_antiga`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 257 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 258 | if($imagem_antiga != ""){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 259 | $caminho_antigo = $pasta_upload . $imagem_antiga; | Define a variável `$caminho_antigo`, que será usada pelo restante do arquivo para controlar dados, estado ou resposta. |
| 260 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 261 | if(file_exists($caminho_antigo)){ | Abre uma condição para validar pré-requisitos ou desviar o fluxo conforme os dados recebidos. |
| 262 | @unlink($caminho_antigo); | Linha de implementação que compõe a lógica normal do arquivo e deve ser lida em conjunto com o bloco onde está inserida. |
| 263 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 264 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 265 | } | Marca abertura/fechamento de bloco de código, objeto, array ou estrutura de controle. |
| 266 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 267 | $query4 = $pdo->prepare("UPDATE $tabela SET imagem_simulada = :imagem_simulada WHERE id = '$id'"); | Centraliza o nome da tabela `$id` em uma variável, facilitando reaproveitamento do valor nas queries do arquivo. |
| 268 | $query4->bindValue(":imagem_simulada", $nome_img); | Associa um valor PHP a um parâmetro nomeado da query preparada. |
| 269 | $query4->execute(); | Executa a query preparada no banco de dados. |
| 270 | Linha em branco usada para separar blocos e melhorar a leitura. | |
| 271 | echo 'Salvo com Sucesso'; | Envia saída para o navegador ou para o AJAX. O conteúdo retornado aqui precisa respeitar o contrato esperado pela tela. |
| 272 | ?> | Fecha o bloco PHP atual para voltar à saída HTML. |