Создание эскиза в соответствии с соотношением сторон изображения при загрузке изображения с переполнением стека

Я хочу создать миниатюру при загрузке изображения, я создал скрипт загрузки.

<?php
if (isset($_POST['upload'])) {
$target = "./img/".basename($_FILES['image']['name']);

$image = $_FILES['image']['name'];

$sql = "INSERT INTO `image`(`image`) VALUES ('$image')";
mysqli_query($connection, $sql);

if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
$smsg = "Image Uploaded Successfuly";
}else {
$fmsg = "An Error Occure During Upload";
}

}
?>

и измените размер изображения скрипта:

function resize($newHeight, $targetFile, $originalFile) {

$info = getimagesize($originalFile);
$mime = $info['mime'];

switch ($mime) {
case 'image/jpeg':
$image_create_func = 'imagecreatefromjpeg';
$image_save_func = 'imagejpeg';
$new_image_ext = 'jpg';
break;

case 'image/png':
$image_create_func = 'imagecreatefrompng';
$image_save_func = 'imagepng';
$new_image_ext = 'png';
break;

case 'image/gif':
$image_create_func = 'imagecreatefromgif';
$image_save_func = 'imagegif';
$new_image_ext = 'gif';
break;

default:
throw new Exception('Unknown image type.');
}

$img = $image_create_func($originalFile);
list($width, $height) = getimagesize($originalFile);

$newWidth = ($width / $height) * $newHeight;
$tmp = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($tmp, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

if (file_exists($targetFile)) {
unlink($targetFile);
}
$image_save_func($tmp, "thumb/$targetFile.$new_image_ext");
}

я присоединяюсь к обоим сценариям, как это

<?php
if (isset($_POST['upload'])) {
$target = "./img/".basename($_FILES['image']['name']);

$image = $_FILES['image']['name'];

$sql = "INSERT INTO `image`(`image`) VALUES ('$image')";
mysqli_query($connection, $sql);

if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
$smsg = "Image Uploaded Successfuly";

resize(320, '$target', '$target');     //resize function
}else {
$fmsg = "An Error Occure During Upload";
}

}
?>

и когда я пытаюсь присоединиться к обоим сценариям, то загрузка изображения, но миниатюра не создана, ошибка = Нет такого файла или каталога.

Любой поможет мне присоединиться к обоим сценариям и создать эскиз при загрузке изображения.

-1

Решение

Одинарные кавычки в переменных следующей строки не анализируются, значения фактически интерпретируются как $target вместо предполагаемого folder/filename.xxx:

resize(320, '$target', '$target');

Либо вы удалите их:

resize(320, $target, $target);

или используйте двойные кавычки.

resize(320, "$target", "$target");

советоваться http://php.net/manual/en/language.types.string.php на струнах.

Используйте отчеты об ошибках PHP и убедитесь, что пути правильные и что папка (и) доступна для записи с соответствующими разрешениями.

1

Другие решения

Других решений пока нет …