Чтобы загрузить и сохранить изображение, я бы порекомендовал создать случайное имя файла для изображения вместо сохранения исходного имени файла.Это предотвратит конфликты, а также добавит меры безопасности.Я бы предложил довольно длинное имя;только случайные числа и буквы.
Затем сохраните случайное имя файла в записи базы данных вместе с информацией о пользователе.Таким образом, вам не придется беспокоиться о том, что имена файлов и имена пользователей не синхронизируются, и, как я уже говорил ранее, кто-то не сможет догадаться, что изображение профиля Джо Шмоэ сохраняется как JoeSchmoe.jpg.
Когда вы доберетесь до части изменения размера изображения, используйте эту функцию, которую я модифицировал ниже (из комментариев пользователя PHP).В вашем случае "images/smallerpicture.jpeg"
, вероятно, будет заменен на "images/<some random name here>.jpeg"
.
Пример:
scaleImage("images/bigpicture.jpeg", 100, 100, "images/smallerpicture.jpeg");
Функция:
function scaleImage($source, $max_width, $max_height, $destination) {
list($width, $height) = getimagesize($source);
if ($width > 150 || $height > 150) {
$ratioh = $max_height / $height;
$ratiow = $max_width / $width;
$ratio = min($ratioh, $ratiow);
// New dimensions
$newwidth = intval($ratio * $width);
$newheight = intval($ratio * $height);
$newImage = imagecreatetruecolor($newwidth, $newheight);
$exts = array("gif", "jpg", "jpeg", "png");
$pathInfo = pathinfo($source);
$ext = trim(strtolower($pathInfo["extension"]));
$sourceImage = null;
// Generate source image depending on file type
switch ($ext) {
case "jpg":
case "jpeg":
$sourceImage = imagecreatefromjpeg($source);
break;
case "gif":
$sourceImage = imagecreatefromgif($source);
break;
case "png":
$sourceImage = imagecreatefrompng($source);
break;
}
imagecopyresampled($newImage, $sourceImage, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Output file depending on type
switch ($ext) {
case "jpg":
case "jpeg":
imagejpeg($newImage, $destination);
break;
case "gif":
imagegif($newImage, $destination);
break;
case "png":
imagepng($newImage, $destination);
break;
}
}
}
Поддерживает GIF, JPG и PNG.