Ícone do site Linha de Comando

PHP: Função para redimensionar arquivos de foto

Bem galera, mais um post surgindo na área.

Função simples e prática para redimensionamento de fotos. O redimensionamento é feito tendo como base os valores definidos nas variáveis $largura_max e $altura_max.

O valor definido nestas variáveis corresponde a altura e largura máxima da imagem.

A largura máxima permitida será de 800px e a altura máxima de 630px.

upload.php


if ( isset( $_POST['submit'] ) ){   
   $pasta = 'uploads';
   $file = $_FILES['arquivo'];
   $temp = $file['tmp_name'];
   $filename = $file['name'];

   $largura_max	= 800;
   $altura_max	= 630;
   // arquivo que contém a função
   require ('redimensiona_fotos.php');
   // funcao que redimensionará a imagem
   // o retorno da função é o nome do arquivo 
   $result = upload($temp, $filename, $largura_max, $altura_max, $pasta);
   // gravando nome do arquivo no banco de dados
   $insert = mysql_query("INSERT INTO nome_tabela (arquivo_imagem) VALUES ('".$result."')");
}
?>

redimensiona_fotos.php


   function upload($tmp, $arquivo, $max_x, $max_y, $pasta){
   //$max_x = 800 $max_y = 630
   $img		= imagecreatefromjpeg($tmp);
   $original_x	= imagesx($img); //largura
   $original_y	= imagesy($img); //altura
   $diretorio	= $pasta."/".$arquivo;
   // verifica se a largura ou altura da imagem é maior que o valor
   // máximo permitido
   if ( ( $original_x > $max_x ) || ( $original_y > $max_y ) ){
	// verifica o que é maior na imagem, largura ou altura?
        if ( $original_x > $original_y ) {	
		$max_y	= ( $max_x * $original_y ) / $original_x;
	}else{
		$max_x	= ( $max_y * $original_x ) / $original_y;
	}
	$nova = imagecreatetruecolor($max_x, $max_y);
	imagecopyresampled($nova, $img, 0, 0, 0, 0, $max_x, $max_y, $original_x, $original_y);
	imagejpeg($nova, $diretorio);
	imagedestroy($nova);
	imagedestroy($img);
   // se for menor, nenhuma alteração é feita 
   }else{
	imagejpeg($img, $diretorio);
	imagedestroy($img);
   }
   return($arquivo);
}
?>
Sair da versão mobile