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);
}
?>