Upload
Publicado por João Pinto Neto 13/06/2007
[ Hits: 9.508 ]
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!"; } } ?>
Consulta Amazon! Buscas na Web
Formularios Atomatic Esse vcs vao adorar
Validação de e-mail usando o DIG
video aleatórias no seu site..youtube
Gerador de Formulários com validações me PHP e JavaScript
Nenhum coment�rio foi encontrado.
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Aprendendo mais sobre Linux com livro (6)
Procrastinação e autossabotagem são problemas muito comuns na sociedad... (6)