Je veux écrire un code PHP qui redimensionne automatiquement toute image téléchargée via un formulaire à 147x147px, mais je n'ai aucune idée de la façon de procéder (je suis relativement novice en PHP).
Jusqu'à présent, j'ai réussi à télécharger des images, à reconnaître les types de fichiers et à nettoyer les noms, mais j'aimerais ajouter la fonctionnalité de redimensionnement dans le code. Par exemple, j'ai une image de test qui fait 2.3MB, et 1331x1331 en dimension, et j'aimerais que le code la redimensionne, ce qui, je suppose, compressera considérablement la taille du fichier de l'image, aussi.
Jusqu'à présent, j'ai obtenu ce qui suit :
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);