Upload
Publicado por João Pinto Neto 13/06/2007
[ Hits: 9.383 ]
Homepage: http://joaopintoneto.com/
Esse script faz upload da imagem, redimenciona, coloca marca d'agua e gera thumbnail.
<?php /************ Formulario para enviar a foto <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>UPLOAD DE FOTO</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> Envie sua foto para o site! <input type="file" name="foto"><BR> <input type="submit" value="Enviar Foto!"> </form> </body> </html> ************/ // configuração set_time_limit(300); // taxa de compressão do JPEG $tx_compressao = 80; // imagem com logomarca e marca d`água $arq_marca_h = './imagens/marcah.png'; $arq_marca_v = './imagens/marcav.png'; // procentagem do tamanho para imagem de thumbnail $per_thumb = 20; // correção de gamma de cores $tx_correcao = 1.5; // pasta de origem, onde o script vai carregar as imagens originais $dir = "./fotos"; // pasta de destino, onde o script vai gravar as imagens geradas $dst = "./fotos"; // prefixo das imagens do thumbnail $pre_thumb = "tn"; // calcula e informa o tamanho do thumbail function detecta_tamanho_thumbnail($img) { global $per_thumb; $vetor[0] = floor((imagesx($img)*$per_thumb)/100); $vetor[1] = floor((imagesy($img)*$per_thumb)/100); return $vetor; } // calcula e informa o tamanho da foto para visualização function detecta_tamanho_visualiza($img) { $vetor[0] = imagesx($img); $vetor[1] = imagesy($img); return $vetor; } // função para processos graficos da foto. function criafoto($arquivo) { global $tx_compressao, $tx_correcao, $arq_marca_h, $arq_marca_v, $dir, $dst, $pre_thumb; // carrega foto original $foto = imagecreatefromjpeg("$dir/$arquivo"); // determina o posicionamento da foto, vertical ou horizontal if (imagesx($foto) > imagesy($foto)) { // imagem da marca horizontal $marca = imagecreatefrompng("$arq_marca_h"); } else { // imagem da marca vertical $marca = imagecreatefrompng("$arq_marca_v"); } // carrega o tamanho da imagem para visualização $tamV = detecta_tamanho_visualiza($marca); // captura o tamanho da imagem para thumbnail $tamT = detecta_tamanho_thumbnail($marca); // transparencia, para o exemplo, o fundo da imagem marca.png deve ser branco imagecolortransparent($marca, imagecolorallocate($marca, 0, 225, 0)); // gera imagens que resultarão na imagem final $final = imagecreatetruecolor($tamV[0], $tamV[1]); $thumb = imagecreatetruecolor($tamT[0], $tamT[1]); // copia o conteudo da imagem original para o imagem resultado final imagecopyresampled($final, $foto, 0, 0, 0, 0, $tamV[0], $tamV[1], imagesx($foto), imagesy($foto)); // aplica correção de gamma (brilho e contraste) imagegammacorrect($final, 0.9, $tx_correcao); // coloca a marca d`água imagecopyresampled($final, $marca, 0, 0, 0, 0, $tamV[0], $tamV[1], $tamV[0], $tamV[1]); // gera thumbnail a partir da imagem final imagecopyresampled($thumb, $final, 0, 0, 0, 0, $tamT[0], $tamT[1], $tamV[0], $tamV[1]); // gera foto na pasta destino imagejpeg($final, "$dst/$arquivo", $tx_compressao); // gera thumbnail na pasta destino imagejpeg($thumb, "$dst/$pre_thumb$arquivo", $tx_compressao); } //---------------------------------------------------------------------------------------- //-------------------------- //------------ $erro = $config = array(); // Prepara a variável do arquivo $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; // Tamanho máximo do arquivo (em bytes) //$config["tamanho"] = 1068830; $config["tamanho"] = 1024 * 100 * 10; // Largura máxima (pixels) $config["largura"] = 1280; // Altura máxima (pixels) $config["altura"] = 960; // Formulário postado... executa as ações if($arquivo) { // Verifica se o mime-type do arquivo é de imagem if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) { $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; } else { // Verifica tamanho do arquivo if($arquivo["size"] > $config["tamanho"]) { $erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo"; } // Para verificar as dimensões da imagem $tamanhos = getimagesize($arquivo["tmp_name"]); // Verifica largura if($tamanhos[0] > $config["largura"]) { $erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels"; } // Verifica altura if($tamanhos[1] > $config["altura"]) { $erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels"; } } // Imprime as mensagens de erro if(sizeof($erro)) { foreach($erro as $err) { echo " - " . $err . "<BR>"; } echo "<a href=\"foto.htm\">Fazer Upload de Outra Imagem</a>"; } // Verificação de dados OK, nenhum erro ocorrido, executa então o upload... else { // Pega extensão do arquivo preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext); // Gera um nome único para a imagem $imagem_nome = uniqid(time()) . "." . $ext[1]; // Caminho de onde a imagem ficará $imagem_dir = "./fotos/" . $imagem_nome; // Faz o upload da imagem move_uploaded_file($arquivo["tmp_name"], $imagem_dir); criafoto($imagem_nome); echo "Sua foto foi enviada com sucesso!"; } } ?>
Mostra a quantidade dos dias da semana em intervalo
Redimensionador de fotos em PHP
Receber atualização de encomendas do correios em seu e-mail
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
PC não liga no filtro de linha (3)
Desde que seja DDR3, posso colocar qualquer memória? (3)
Instalar sem formatar, pergunta meio boba. [RESOLVIDO] (7)
Curso gratuito Defesa de redes 10ª Maratona CiberEducação Cisco Brasil... (0)