Publicidade Relacionada

Script upload de fotos em php


Um recurso muito interessante na programação de site é o upload de imagens para o servidor php para sites de imobiliárias, galeria de fotos, imagem de perfil entre muito outros site que utilizam sistemas de imagens.

O maior problema dessa sistema é o tamanho e qualidade das imagens, hoje vou postar aqui um simples tutorial que funciona perfeitamente para realizar upload da imagem e tratar suas caracteriscas com facilidade.

Primeiro temos que criar o arquivo do formulário que vai enviar a foto para o arquivo php que processa o armazenamento

Arquivo foto.php

<form action=”add-foto.php” method=”post” encType=”multipart/form-data”>

<input id=”imagem”>

<input value=”Enviar”>

</form>

Nada de novidade pra quem já conhece HTML, esse código é um simples formulário que tem um campo de imagem e um botão de envio, o suficiente para entender o tutorial. Vejamos o arquivo add-foto.php – PS: Esse arquivo eu usei em um dos meus projetos estou a compartilhar pelo fato de estar em falta alguns scripts, construi esse script a partir de alguns códigos e classes que encontrei. Nesse caso é um update para site de fotos pessoais.

Arquivo add-foto.php

<?

// essa função é muito importante pois é responsável por redimencionar a imagem caso ela seja maior que o estipulado pelo administrador do site ( valor que será definido mais abaixo em variaveis ). Não vou falar muito da função pois não seu especialista em fotos e imagens com php e também deixaria o tutorial muito grande, apenas não deixe nada de fora.

function redimensiona_imagem($origem,$destino,$maxlargura=100,$maxaltura=100,$qualidade=80)

{

if(!strstr($origem,”http”) && !file_exists($origem))

{

echo(“Arquivo de origem da imagem inexistente”);

return false;

}

$ext = strtolower(end(explode(‘.’, $origem)));

if($ext == “jpg” || $ext == “jpeg”)

{

$img_origem = @imagecreatefromjpeg($origem);

}

elseif ($ext == “gif”)

{

$img_origem = @imagecreatefromgif($origem);

}

elseif ($ext == “png”)

{

$img_origem = @imagecreatefrompng($origem);

}

if(!$img_origem)

{

echo(“Erro ao carregar a imagem, talvez formato nao suportado”);

return false;

}

$alt_origem = imagesy($img_origem);

$lar_origem = imagesx($img_origem);

$escala = min($maxaltura/$alt_origem, $maxlargura/$lar_origem);

if($escala < 1)

{

$alt_destino = floor($escala*$alt_origem);

$lar_destino = floor($escala*$lar_origem);

// Cria imagem de destino

$img_destino = imagecreatetruecolor($lar_destino,$alt_destino);

// Redimensiona

imagecopyresampled($img_destino, $img_origem, 0, 0, 0, 0, $lar_destino, $alt_destino, $lar_origem, $alt_origem);

imagedestroy($img_origem);

}

else

{

$img_destino = $img_origem;

}

$ext = strtolower(end(explode(‘.’, $destino)));

if($ext == “jpg” || $ext == “jpeg”)

{

imagejpeg($img_destino,$destino,$qualidade);

return true;

}

elseif ($ext == “gif”)

{

imagepng($img_destino,$destino);

return true;

}

elseif ($ext == “png”)

{

imagepng($img_destino,$destino);

return true;

}

else

{

echo(“Formato de destino nao suportado”);

return false;

}

}

$pasta_fotos = “imagens/” //pasta onde armazena as fotos

$tamanho_arquivos = 1000000; //tamanho Maximo da imagem em bytes

$largura_max = 1024; //width máxima que a foto pode ter

$altura_max = 2048; //heigth máxima que a foto pode ter

$qualidade_foto_nova=80; //qualidade da nova imagem

$url_erro = “http://seusite.com.br/404.php”; //pagina que redireciona caso ocorra algum erro

$foto_type  =  $_FILES['imagem']['type']; //recebe o tipo da foto

$foto_size   =  $_FILES['imagem']['size']; // recebe o tamanho da foto

$arqTemp   =  $_FILES['imagem']['tmp_name'];  //recebe o arquivo temporario da foto

$nome_foto =  $_FILES['imagem']['name'];  //recebe o nome da foto

//Explicadas as variáveis vamos as funcionalidades!

if ($foto_size > 0)

{

if($foto_type <> ‘image/gif’ && $foto_type <> ‘image/jpeg’ && $foto_type <> ‘image/png’)

{

echo “<script> alert(‘Tipo de arquivo inválido!’);window.location=’$url_erro’;</script>”;

}

else

{

if($foto_size > $tamanho_arquivos)

{

echo “<script> alert(‘O tamanho do arquivo é maior do que o esperado !’);window.location=’$url_erro’;</script>”;

}

}

}

//primeiro ele checa se a foto tem tamanho maior que 0 se sim ele checa o tipo da foto e se for ok ele checa se a foto tem tamanho maior que o limite. Se falso as verificações ele gera o erro com javascript e já redireciona impedindo a conclusão do script

//depois das verificações Ok

$novo_nome = time().”_”.$nome_foto; // gera um novo nome da foto para evitar duplicidade

$destino = $pasta_fotos.”/”.$novo_nome; // gera o destino exato da foto no servidor

$status = move_uploaded_file($arqTemp,$destino); // aqui se passa o mais importante, essa função é a responsável pelo update

// nesse próximo IF checa-se se a resposta do $status foi verdadeira, ou seja, se foi upado. Se sim chama a função que se encarrega de redimencionar a imagem proporcionalmente ( não vou falar dela hoje pois ficaria enorme o tópico) e então depois de redimencionar a imagem a função retorna concluido ou não , se sim a variável final recebe o texto para ser exibe como mensagem de conclusão se não $final recebe mensagem de erro. Se caso a verificação da variável $status seja falso( a função _uploaded_file($arqTemp,$destino) não upou ) a variável final recebe o erro que não foi upado exibe o erro e redireciona para a pagina de erro.

if($status)

{

$resposta = redimensiona_imagem($destino,$destino,$largura_max,$altura_max,$qualidade_foto_nova);

if ($resposta)

{

$final = “Arquivo “.$nome_foto.” enviado com Sucesso”;

}

else

{

$final = “Ocorreu Algum erro ao preparar a imagem: “.$nome_foto.” para: “.$pasta_fotos;

}

}

else

{

$erro_upload = “Ocorreu algum erro no Upload da Imagem por favor tem novamente!”;

echo “<script>alert(‘$erro_upload’);window.location=’$url_erro’;</script>”;

}

//caso ocorra tudo certo a ultima instrução é executada exibindo o ocorrido na em uma caixa de mensagem.

echo “<script>alert(‘$final’);window.location=’$url_erro’;</script>”;

?>

Bom pessoal é isso, estou usando esse script e está funcionando perfeitamente sem problemas algum. Se alguém tiver alguma duvida estou a disposição para ajudar a desenvolver e aprimorar mais e também deixo qualquer pessoa utilizar totalmente o script somente me avise de melhoras para implementar no post mais tarde.

Meu E-mail é fernandocesar226@hotmail.com ou mesmo comente aqui no meu blog .

GD Star Rating
loading...
Script upload de fotos em php, 5.0 out of 5 based on 1 rating

Receba Mais informações por email