Upload
Publicado por João Pinto Neto 13/06/2007
[ Hits: 9.526 ]
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!"; } } ?>
Classe de Internacionalização(Multi linguagens)
Sistema de Boletos e Cobrança Online
Transferir dados do Excel ou TXT para BD utilizando PHP
Nenhum coment�rio foi encontrado.
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Realizar overclock no Miyoo Mini (plus ou normal)
Otimização de memória para máquinas modestas
Google Crhome não abre desde que eu atualizei pelo "program... (13)
Dúvidas sobre a originalidade de conteúdos online (6)
Monitoramento pfsense com zabbix (0)
como instalar o amdgpu no linux manjaro no linux, pelo o repo e comand... (4)