Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

3l3tr1c

Upload de imagem e redimensionamento

Recommended Posts

A partir desse código você pode enviar a imagem, empacotar o nome dela evitando o uso de caracteres especiais em seu nome, redimensionar e gravar.

 

A imagem é grava em um diretório e em seguida é sobreposta por uma imagem com o mesmo nome, mas tamanho diferente.

 

Uso o código e não encontrei erros. Qualquer coisa postem os erros. Valeu!

 

 

/*

Para usar a funcao basta inseir na pagina o seguinte codigo:			
																			
<?PHP																		
$arquivo = upload($_FILES['arquivo'],'diretorio/');
?>	

Obs.: a funcao do upload eu adaptei de uma que encontrei na net e de redimensionar eu criei.

*/


//Exibi alertas com os erros retornados, somente se eles existirem 
if(isset($_GET['01'])){
echo "<script>alert(\"Formato de imagem inválido. O formato da imagem que você está tentando enviar não é permitido pelo sistema.\")</script>";
}else if(isset($_GET['02'])){
echo "<script>alert(\"O tamanho do arquivo que você está tentando enviar é muito alto. Tamanho máximo permitido: 1.2 MB.\")</script>";
}

function upload($file, $dir, $ext = array("gif","jpg","png","jpeg","JPG","PNG","GIF","JPEG")) {
if($file['name']!=""){ //Executa o codigo somente se houver upload
$nome = $file['name']; //atribui a var nome o valor NAME da matriz file
$ex2        = end(explode(".",$nome)); // Quebra onde achar "."
if(($file['name']!="") AND (is_file($file['tmp_name'])) AND (in_array($ex2,$ext)) ) {
$formato    = $file["type"]; //Formato da imagem

$mudarNome  = md5($nome).".".$ex2; //empacota o nome evitando caracteres especiais e espaços

if($formato == "image/jpeg" OR $formato == "image/jpg" OR $formato == "image/png" OR $formato == "image/gif"){
move_uploaded_file($file['tmp_name'], "$dir/$mudarNome") or die ();

redimencionamento($mudarNome, $formato, $dir, $ex2); //Chama a funcao que redimensiona

}

else{

die (header("Location: img.php?01"));

}// Else anterior
}//If nome, file, array
}//If nome!=""
}//Função upload


//Funcao para redimensionar
function redimencionamento($mudarNome, $formato, $dir, $extensao){

//nome do arquivo e diretorio para gravacao
$filename = $dir."/".$mudarNome;
//$dimensaoImagem = getimagesize($filename, $info);

//atribui as variaveis largura e altura os valores da matriz obtida a partir de getimage
list($width, $height) = getimagesize($filename);

//define percentual para redimensionamento a partir do tamanho original
if($height>1000 AND $width>1000){
$percent = 0.2;
}elseif($height>500 AND $width>500){
$percent = 0.4;
}elseif($height<500 AND $width<500){
$percent = 0.8;
}elseif($height<300 AND $width<300){
$percent = 1;
}

//diminui proporcionalmente o tamanho da imagem
$newwidth = $width * $percent;
$newheight = $height * $percent;

//Verifica o formato da imagem para uso especifico da funcao imagecreate
if($formato == "image/jpeg"){
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
}elseif($formato == "image/png"){
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefrompng($filename);
}elseif($formato == "image/gif"){
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromgif($filename);
}

//Fundo branco
	//aloca cores
$fundoBranco = imagecolorallocate($thumb,255,255,255); 
	//pinta o fundo
imagefill($thumb, 0, 0, $fundoBranco);

//Redimensiona
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

//Grava no formato .JPG
$imgMenor = imagejpeg($thumb, "$dir/$mudarNome");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algumas correções:

 

Aonde vocês veem "if($height>1000 AND..." troquem o operador por "or" para não causar erro e há um pequeno erro gramatical no nome da segunda função. O correto é "redimensionar", procurem aonde há a função e renomeiem. Entrementes, só isso que vi de errado. Algo a mais, postem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eai kra beleza? achei interessante esse esquema de upar a imagem, pelo que entendi ele upa a mesma e ja deixa ela do tamanho definido, me corrija se estiver enganado, e tambem ja renomeia a foto, isso? bom to tentando aqui mais como sou leigo nao sei direito como usar esse codigo rsrs, mais to tentando, se tiver como dar um help agradeceria muito....abç e vlwww por disponibilizar o codigo..........

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eai kra beleza? achei interessante esse esquema de upar a imagem, pelo que entendi ele upa a mesma e ja deixa ela do tamanho definido, me corrija se estiver enganado, e tambem ja renomeia a foto, isso? bom to tentando aqui mais como sou leigo nao sei direito como usar esse codigo rsrs, mais to tentando, se tiver como dar um help agradeceria muito....abç e vlwww por disponibilizar o codigo..........

 

Correto. Ao fazer o upload da imagem o nome dela é encriptado (empacotado) para que não seja enviado caracteres especiais junto a ele, essa é apenas uma ideia de se fazer isso. Depois a imagem é enviada a uma pasta que VOCÊ CRIARÁ e redimensionada. O nome da pasta que você criará será inserido, no código, onde diz "DIRETORIO/" é lá aonde você irá por o nome da pasta criada. Você pode utilizar o código em uma página chamada upload.php, p. ex., e colocar o script no começo da página. EM seguida voce cria um formulário e adiciona a ele um campo de arquivos (filefield) e chama-o de qualquer coisa, ex.: foto, logomarca, imagem... No "action" do formulário você põe o sinal de interrogação, ex.: <form action="?"....>, dessa forma os dados será enviado para a mesma página. E no começo da página, estará o código que fará o upload. Lembre-se: é preciso usar a função que ordena o upload, faça assim:

<?PHP                                                                                                                                           
$arquivo = upload($_FILES['arquivo'],'diretorio/');
?>
, ponha isso antes do outro código. Mais uma vez, o nome "arquivo" é o nome do filefield e o "diretorio/" é a pasta que você vai criar, essa pasta deve estar no mesmo lugar da página, caso contrário mude o endereço para outro local. Espero ter ajuda, no mais aconselho-te a dar uma estudada nos códigos que você encontra dentro da função, assim você entenderá melhor o que se passa em cada linha da mesma. Boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.