Estou querendo escrever um código PHP que redimensiona automaticamente qualquer imagem carregada por meio de um formulário para 147x147px, mas não tenho ideia de como fazer isso (sou relativamente novato em PHP).
Até agora, carreguei imagens com sucesso, tipos de arquivos sendo reconhecidos e nomes limpos, mas gostaria de adicionar a funcionalidade de redimensionamento ao código. Por exemplo, eu tenho uma imagem de teste que tem 2,3 MB e 1331 x 1331 de dimensão e gostaria que o código diminuísse, o que suponho que comprimirá drasticamente o tamanho do arquivo da imagem também.
Até agora, tenho o seguinte:
if ($_FILES) {
//Put file properties into variables
$file_name = $_FILES['profile-image']['name'];
$file_size = $_FILES['profile-image']['size'];
$file_tmp_name = $_FILES['profile-image']['tmp_name'];
//Determine filetype
switch ($_FILES['profile-image']['type']) {
case 'image/jpeg': $ext = "jpg"; break;
case 'image/png': $ext = "png"; break;
default: $ext = ''; break;
}
if ($ext) {
//Check filesize
if ($file_size < 500000) {
//Process file - clean up filename and move to safe location
$n = "$file_name";
$n = ereg_replace("[^A-Za-z0-9.]", "", $n);
$n = strtolower($n);
$n = "avatars/$n";
move_uploaded_file($file_tmp_name, $n);
} else {
$bad_message = "Please ensure your chosen file is less than 5MB.";
}
} else {
$bad_message = "Please ensure your image is of filetype .jpg or.png.";
}
}
$query = "INSERT INTO users (image) VALUES ('$n')";
mysql_query($query) or die("Insert failed. " . mysql_error() . "<br />" . $query);